分页栏的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操作xml
Nov 04 Javascript
Aptana调试javascript图解教程
Nov 30 Javascript
JQuery Ajax通过Handler访问外部XML数据的代码
Jun 01 Javascript
js动态修改input输入框的type属性(实现方法解析)
Nov 13 Javascript
javascript 回调函数详解
Nov 11 Javascript
node.js中的http.get方法使用说明
Dec 14 Javascript
用vue2.0实现点击选中active其他选项互斥的效果
Apr 12 Javascript
node中的session的具体使用
Sep 14 Javascript
Node.js 多线程完全指南总结
Mar 27 Javascript
深入了解JavaScript 防抖和节流
Sep 12 Javascript
十分钟教你上手ES2020新特性
Feb 12 Javascript
JS自定义滚动条效果
Mar 13 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去除数组中重复的元素并按键名排序函数
2008/08/18 PHP
自己在做项目过程中学到的PHP知识收集
2012/08/20 PHP
php导出生成word的方法
2015/12/25 PHP
php中array_unshift()修改数组key注意事项分析
2016/05/16 PHP
PHP通过get方法获得form表单数据方法总结
2018/09/12 PHP
Laravel使用原生sql语句并调用的方法
2019/10/09 PHP
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
js中的string.format函数代码
2020/08/11 Javascript
jQuery实现用户注册的表单验证示例
2013/08/28 Javascript
javascript中的window.location.search方法简介
2013/09/02 Javascript
JS控制网页动态生成任意行列数表格的方法
2015/03/09 Javascript
jquery计算鼠标和指定元素之间距离的方法
2015/06/26 Javascript
javascript中JSON对象与JSON字符串相互转换实例
2015/07/11 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
2016/10/28 Javascript
js实现产品缩略图效果
2017/03/10 Javascript
Javascript 实现匿名递归的实例代码
2017/05/25 Javascript
JavaScript中document.referrer的用法详解
2017/07/04 Javascript
Vue.js实现价格计算器功能
2020/03/30 Javascript
vue服务端渲染的实例代码
2017/08/28 Javascript
使用 node.js 模仿 Apache 小部分功能
2019/07/07 Javascript
让你30分钟快速掌握vue3教程
2020/10/26 Javascript
小程序实现上下切换位置
2020/11/16 Javascript
Python json模块使用实例
2015/04/11 Python
python ansible服务及剧本编写
2017/12/29 Python
python3.7通过thrift操作hbase的示例代码
2020/01/14 Python
html5应用缓存_动力节点Java学院整理
2017/07/13 HTML / CSS
HTML5公共页面提取作为公用代码的方法
2020/06/30 HTML / CSS
英国水族馆和池塘用品购物网站:Warehouse Aquatics
2019/08/29 全球购物
企划经理的岗位职责
2013/11/17 职场文书
机械工程及其自动化专业求职信
2014/08/08 职场文书
领导班子奢靡之风查摆问题及整改措施
2014/09/27 职场文书
2014年学生会干事工作总结
2014/11/07 职场文书
优秀班主任申报材料
2014/12/16 职场文书
刑事起诉书范文
2015/05/19 职场文书
大学生社区义工服务心得体会
2016/01/22 职场文书
2019经典广告词集锦!
2019/07/02 职场文书