分页栏的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 相关文章推荐
Prototype源码浅析 Enumerable部分之each方法
Jan 16 Javascript
Javascript简单实现可拖动的div
Oct 22 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
Nov 01 Javascript
JS完整获取IE浏览器信息包括类型、版本、语言等等
May 22 Javascript
js实现左侧网页tab滑动门效果代码
Sep 06 Javascript
Javascript随机标签云代码实例
Jun 21 Javascript
JQuery实现定时刷新功能代码
May 09 jQuery
详解Node.js利用node-git-server快速搭建git服务器
Sep 27 Javascript
vue.js 底部导航栏 一级路由显示 子路由不显示的解决方法
Mar 09 Javascript
vuex+axios+element-ui实现页面请求loading操作示例
Feb 02 Javascript
用JavaScript实现贪吃蛇游戏
Oct 23 Javascript
Vue实现购物小球抛物线的方法实例
Nov 22 Vue.js
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
2020年4月新番动漫目录 官方宣布4月播出的作品一览
2020/03/08 日漫
调试一段PHP程序时遇到的三个问题
2012/01/17 PHP
file_get_contents获取不到网页内容的解决方法
2013/03/07 PHP
PHP实现变色验证码实例
2014/01/06 PHP
Zend Framework 2.0事件管理器(The EventManager)入门教程
2014/08/11 PHP
php实现图片上传、剪切功能
2016/05/07 PHP
php 使用curl模拟ip和来源进行访问的实现方法
2017/05/02 PHP
兼容Mozilla必须知道的知识。
2007/01/09 Javascript
Javascript 布尔型分析
2008/12/22 Javascript
jQuery动态添加的元素绑定事件处理函数代码
2011/08/02 Javascript
getAsDataURL在Firefox7.0下无法预览本地图片的解决方法
2013/11/15 Javascript
ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)
2014/08/30 Javascript
javascript实现自动填写表单实例简析
2015/12/02 Javascript
总结AngularJS开发者最常犯的十个错误
2016/08/31 Javascript
jQuery 实时保存页面动态添加的数据的示例
2017/08/14 jQuery
关于vue中watch检测到不到对象属性的变化的解决方法
2018/02/08 Javascript
Vue实现导出excel表格功能
2018/03/30 Javascript
JavaScript设计模式之观察者模式实例详解
2019/01/16 Javascript
js实现聊天对话框
2020/02/08 Javascript
python基于mysql实现的简单队列以及跨进程锁实例详解
2014/07/07 Python
python一键升级所有pip package的方法
2017/01/16 Python
django主动抛出403异常的方法详解
2019/01/04 Python
python+Selenium自动化测试——输入,点击操作
2020/03/06 Python
美国婚戒购物网站:Anjays Designs
2017/06/28 全球购物
ASICS印度官方网站:日本专业运动品牌
2020/06/20 全球购物
PHP如何删除一个Cookie值
2012/11/15 面试题
为什么要使用servlet
2016/01/17 面试题
自我鉴定200字
2013/10/28 职场文书
微观物理专业自荐信
2014/01/26 职场文书
乡镇干部先进性教育活动个人整改措施
2014/09/16 职场文书
大学生实习证明范文(5篇)
2014/09/18 职场文书
党员个人对照检查材料
2014/10/01 职场文书
机关作风建设心得体会
2014/10/22 职场文书
党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
学校少先队工作总结
2015/08/12 职场文书
使用python如何删除同一文件夹下相似的图片
2021/05/07 Python