<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>分页器</title>
<style>
.pagination{
display: flex;
width: 600px;
height: 35px;
margin: 0 auto ;
}
.pagination span a {
box-sizing: border-box;
text-decoration: none;
color: black;
}
.pagination span {
text-align: center;
width: 40px;
height: 35px;
line-height: 35px;
margin: 0px 2px;
}
.pagination span i {
font-size: 10px;
font-weight: 100;
}
.pagination span img{
width: 30px;
height: 25px;
}
.pagination .pageStyle a {
display: block;
text-align: center;
width: 40px;
height: 35px;
line-height: 35px;
border: 1px solid #ccc;
border-radius: 5px;
}
.pagination .pageStyle a:hover {
border: 1px solid rgb(27, 129, 121);
}
.pagination .active{
background-color: cadetblue;
}
</style>
</head>
<body>
<div class="pagination">
</div>
<script>
class PageClass {
constructor( ele , pageNum , page , cb ){
this.ele = ele ;
this.pageNum = pageNum ;
this.page = page ;
this.cb = cb ;
this.renderPage() ;
this.operate();
}
renderPage(){
let str = '' ;
if( this.pageNum > 5 ){
if( this.page <= 4 ){
for( let i = 0 ; i < 5 ; i ++ ){
if( (i+1) == this.page ){
str += `<span class="pageStyle" myPage="${i+1}"><a href="javascript:;" class="active">${i+1}</a></span>`;
} else {
str += `<span class="pageStyle" myPage="${i+1}"><a href="javascript:;">${i+1}</a></span>`;
}
}
str += `<span><i>•••</i></span><span class="pageStyle" myPage="${this.pageNum}"><a href="javascript:;">${this.pageNum}</a></span>` ;
} else if ( this.page > 4 && this.page < this.pageNum - 3 ){
str += `<span class="pageStyle" myPage="1"><a href="javascript:;">1</a></span><span><i>•••</i></span>` ;
for( let i = this.page - 3 ; i < this.page + 2 ; i ++ ){
if( (i+1) == this.page ){
str += `<span class="pageStyle" myPage="${i+1}"><a href="javascript:;" class="active">${i+1}</a></span>`;
} else {
str += `<span class="pageStyle" myPage="${i+1}"><a href="javascript:;">${i+1}</a></span>`;
}
}
str += `<span><i>•••</i></span><span class="pageStyle" myPage="${this.pageNum}"><a href="javascript:;">${this.pageNum}</a></span>` ;
} else if ( this.page >= this.pageNum - 3){
str += `<span class="pageStyle" myPage="1"><a href="javascript:;">1</a></span><span><i>•••</i></span>` ;
for( let i = this.pageNum - 5 ; i < this.pageNum ; i ++ ){
if( (i+1) == this.page ){
str += `<span class="pageStyle" myPage="${i+1}"><a href="javascript:;" class="active">${i+1}</a></span>`;
} else {
str += `<span class="pageStyle" myPage="${i+1}"><a href="javascript:;">${i+1}</a></span>`;
}
}
}
} else {
for( let i = 0 ; i < this.pageNum ; i ++ ){
if( (i+1) == this.page ){
str += `<span class="pageStyle" myPage="${i+1}"><a href="javascript:;" class="active">${i+1}</a></span>`;
} else {
str += `<span class="pageStyle" myPage="${i+1}"><a href="javascript:;">${i+1}</a></span>`;
}
}
}
this.ele.innerHTML = `
<span class="first"><a href="javascript:;"><img src="./pageImg/images/first.png"></a></span>
<span class="prev"><a href="javascript:;"><img src="./pageImg/images/prev.png"></a></span>
${str}
<span class="next"><a href="javascript:;"><img src="./pageImg/images/next.png"></a></span>
<span class="last"><a href="javascript:;"><img src="./pageImg/images/last.png"></a></span>` ;
}
operate(){
const _that = this ;
let firstEle = this.ele.querySelector(".first");
let lastEle = this.ele.querySelector(".last");
let nextEle = this.ele.querySelector(".next");
let prevEle = this.ele.querySelector(".prev");
let pageStyleEles = this.ele.querySelectorAll(".pageStyle");
firstEle.onclick = function (){
_that.page = 1 ;
_that.cb(_that.page);
}
lastEle.onclick = function (){
_that.page = _that.pageNum ;
_that.cb( _that.page);
}
nextEle.onclick = function (){
if( _that.page < _that.pageNum ){
_that.page = _that.page + 1 ;
_that.cb(_that.page);
}
}
prevEle.onclick = function (){
if( _that.page > 1 ){
_that.page = _that.page - 1 ;
_that.cb(_that.page);
}
}
pageStyleEles.forEach(function(pageStyleEle){
pageStyleEle.onclick = function (){
_that.page = parseInt(this.getAttribute("myPage"));
_that.cb(_that.page);
}
});
}
}
let pageEle = document.querySelector(".pagination");
ready(1);
function ready(page){
new PageClass(pageEle,1000,page,function(page){
ready(page);
});
}
</script>
</body>
</html>