分页展示如下,不知道这种分页的实现思路应该怎么实现?
当前页:第1页 [1] 2 3 ... 100 当前页:第3页 1 2 [3] 4 5 ... 100 当前页:第5页 1 ... 3 4 [5] 6 7 ... 100 当前页:第98页 1 ... 96 97 [98] 99 100 当前页:第100页 1 ... 98 99 [100]
分页展示如下,不知道这种分页的实现思路应该怎么实现?
当前页:第1页 [1] 2 3 ... 100 当前页:第3页 1 2 [3] 4 5 ... 100 当前页:第5页 1 ... 3 4 [5] 6 7 ... 100 当前页:第98页 1 ... 96 97 [98] 99 100 当前页:第100页 1 ... 98 99 [100]
这个应该是纯在前端来实现的,后端正常分页就好,可以参考下面的算法,仅供参考
function getPagination(currentPage, totalCount, pageSize) {
// 计算总页数
var totalPage = Math.ceil(totalCount / pageSize);
// 定义变量来存储页码
var pageNumbers = [];
if (totalPage <= 7) {
// 如果总页数不超过7页,直接输出所有页码
for (var i = 1; i <= totalPage; i++) {
pageNumbers.push(i);
}
} else {
if (currentPage <= 4) {
// 当前页码靠近起始页时
for (var i = 1; i <= 5; i++) {
pageNumbers.push(i);
}
pageNumbers.push("...");
pageNumbers.push(totalPage);
} else if (currentPage >= totalPage - 3) {
// 当前页码靠近结束页时
pageNumbers.push(1);
pageNumbers.push("...");
for (var i = totalPage - 4; i <= totalPage; i++) {
pageNumbers.push(i);
}
} else {
// 当前页码在中间部分时
pageNumbers.push(1);
pageNumbers.push("...");
// 加入两个相邻的页码
for (var i = currentPage - 2; i <= currentPage + 2; i++) {
pageNumbers.push(i);
}
pageNumbers.push("...");
pageNumbers.push(totalPage);
}
}
return pageNumbers.join(" ")
}
// 测试
console.log(getPagination(1, 1000, 10));
console.log(getPagination(3, 1000, 10));
console.log(getPagination(5, 1000, 10));
console.log(getPagination(7, 1000, 10));
console.log(getPagination(55, 1000, 10));
console.log(getPagination(95, 1000, 10));
console.log(getPagination(98, 1000, 10));
console.log(getPagination(100, 1000, 10));
console.log(getPagination(111, 1000, 10));
VM712:49 1 2 3 4 5 ... 100
VM712:50 1 2 3 4 5 ... 100
VM712:51 1 ... 3 4 5 6 7 ... 100
VM712:52 1 ... 5 6 7 8 9 ... 100
VM712:53 1 ... 53 54 55 56 57 ... 100
VM712:54 1 ... 93 94 95 96 97 ... 100
VM712:55 1 ... 96 97 98 99 100
VM712:56 1 ... 96 97 98 99 100
VM712:57 1 ... 96 97 98 99 100
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
跟什么数据库没关系吧?
只要发现规律就好了,拿到当前页$current和总页数$total
你的规律应该是,只展示当前页加减2页,
另外对首页和最后一页特殊判断下就ok了,不是第一页就显示1,不是最后一页就显示最后一页,
对省略号的判断差不多,文字太多不写了