分页栏的web标准实现


Posted in Javascript onNovember 01, 2011

分页栏是网页上最常见不过的一个组件,本博文给出分页栏的一个web2.0标准示例,并作简要分析。本分页栏的界面效果如下图所示:

分页栏的web标准实现

本分页栏组件具有以下特性:

1、不论当前页码是哪一个,分页栏始终显示第一页的页码和最后一页的页码(如上图所示)。这样,用户不仅可以从最后的页码知道总共有多少页,还能方便地在最后一页和第一页之间导航。

2、使展现的页码个数(省略符也算一个)始终固定,比如固定为9个。如下面两个图所示,当前页码为19(或任意其他数字)时,展现的页码个数都为9个。这样,下一页按钮的位置始终保持不变,在做Ajax分页时,用户可以在同一个位置多次点击下一页按钮,而不会因为按钮位置发生变化而得移动鼠标,极大地提高了用户体验。

分页栏的web标准实现分页栏的web标准实现

3、通过接口参数可以方便地设置展现的页码个数。genPaginationHtml()接口的deviation(偏移量)参数用于设置当前页码的左边或右边显示的页码个数。所以,总共展现的页码个数等于2*deviation+1。比如,本示例中设置deviation4,则总共展现9个页码。

请您动手注释掉本示例以下源码,然后从界面上比较注释前后两者的区别。您还可以比较一下Google的分页行为,您会发现其行为就是注释掉本示例以下代码后的行为。在编写本示例的时候我研究了Google的分页行为,然后再逐步演变扩展。

//使总码数固定 
if (curPage - startNum < deviation) { 
endNum += deviation - (curPage - startNum); 
endNum = endNum > pagesCount ? pagesCount : endNum; 
} 
if (endNum - curPage < deviation) { 
startNum -= deviation - (endNum - curPage); 
startNum = startNum < 1 ? 1 : startNum; 
};

最后给出genPaginationHtml(rowsCount, pageSize, curPage, toPage, deviation)接口参数说明如下:
rowsCount(number):记录总数。
pageSize(number):每页显示的记录数。
curPage(number):当前页页码。
toPage(string):一个函数名,实现跳到指定页的逻辑。
deviation(number):当前页码的左边或右边显示的页码个数。

分页栏示例下载

Javascript 相关文章推荐
javascript之ESC(第二类混淆)
May 06 Javascript
jQuery easyui datagrid动态查询数据实例讲解
Feb 26 Javascript
使用jQuery时Form表单元素ID和name命名大忌
Mar 06 Javascript
js中 计算两个日期间的工作日的简单实例
Aug 08 Javascript
Angularjs单选框相关的示例代码
Aug 17 Javascript
React Native 图片查看组件的方法
Mar 01 Javascript
Angular利用内容投射向组件输入ngForOf模板的方法
Mar 05 Javascript
详解node Async/Await 更好的异步编程解决方案
May 10 Javascript
小程序转发探索示例
Feb 19 Javascript
实现elementUI表单的全局验证的方法步骤
Apr 29 Javascript
node.js +mongdb实现登录功能
Jun 18 Javascript
原生JavaScript实现刮刮乐
Sep 29 Javascript
jquery键盘事件使用介绍
Nov 01 #Javascript
JS鼠标事件大全 推荐收藏
Nov 01 #Javascript
EasyUI中的tree用法介绍
Nov 01 #Javascript
jQuery代码优化 事件委托篇
Nov 01 #Javascript
jQuery代码优化 遍历篇
Nov 01 #Javascript
jQuery代码优化 选择符篇
Nov 01 #Javascript
jQuery代码优化之基本事件
Nov 01 #Javascript
You might like
PHP中的超全局变量
2006/10/09 PHP
php实现的简单检验登陆类
2015/06/18 PHP
php实现模拟post请求用法实例
2015/07/11 PHP
Jquery+WebService 校验账号是否已被注册的代码
2010/07/12 Javascript
JavaScript中自定义事件用法分析
2014/12/23 Javascript
每天一篇javascript学习小结(面向对象编程)
2015/11/20 Javascript
JavaScript 数组中最大最小值
2016/06/05 Javascript
JavaScript如何获取到导航条中HTTP信息
2017/10/10 Javascript
javaScript之split与join的区别(详解)
2017/11/08 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
原生JS实现的多个彩色小球跟随鼠标移动动画效果示例
2018/02/01 Javascript
Express进阶之log4js实用入门指南
2018/02/10 Javascript
详解使用jest对vue项目进行单元测试
2018/09/07 Javascript
微信小程序自定义组件的实现方法及自定义组件与页面间的数据传递问题
2018/10/09 Javascript
jquery使用echarts实现有向图可视化功能示例
2019/11/25 jQuery
js滚轮事件 js自定义滚动条的实现
2020/01/18 Javascript
swiper自定义分页器的样式
2020/09/14 Javascript
k8s node节点重新加入master集群的实现
2021/02/22 Javascript
[52:15]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS LGD-GAMING
2014/05/23 DOTA
Python聊天室实例程序分享
2016/01/05 Python
python3+PyQt5实现柱状图
2018/04/24 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
2019/10/09 Python
python模拟预测一下新型冠状病毒肺炎的数据
2020/02/01 Python
python使用信号量动态更新配置文件的操作
2020/04/01 Python
python-jwt用户认证食用教学的实现方法
2021/01/19 Python
白宫黑市官网:White House Black Market
2016/11/17 全球购物
海信商城:海信电视、科龙空调、容声冰箱官方专卖
2017/02/07 全球购物
九年级体育教学反思
2014/01/23 职场文书
《中彩那天》教学反思
2014/02/22 职场文书
文明村镇申报材料
2014/05/06 职场文书
母亲节演讲稿
2014/05/27 职场文书
考试作弊被抓检讨书
2014/10/02 职场文书
社区服务理念口号
2015/12/25 职场文书
从np.random.normal()到正态分布的拟合操作
2021/06/02 Python
为了顺利买到演唱会的票用Python制作了自动抢票的脚本
2021/10/16 Python
TV动画「神渣☆爱豆」公开第一弹主视觉图
2022/03/21 日漫