分页栏的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使用replace函数替换字符串的方法
Apr 06 Javascript
详解JavaScript中的Unescape()和String() 函数
Nov 09 Javascript
Vue.js每天必学之过滤器与自定义过滤器
Sep 07 Javascript
JavaScript用200行代码制作打飞机小游戏实例
Jun 21 Javascript
Javascript防止图片拉伸的自适应处理方法
Dec 26 Javascript
微信小程序实现长按删除图片的示例
May 18 Javascript
微信小程序多音频播放进度条问题
Aug 28 Javascript
微信小程序上传多图到服务器并获取返回的路径
May 05 Javascript
原生js实现trigger方法示例代码
May 22 Javascript
判断“命令按钮”是否被鼠标单击详解
Jul 31 Javascript
Vue-Cli项目优化操作的实现
Oct 27 Javascript
TS 类型收窄教程示例详解
Sep 23 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用strstr()函数阻止垃圾评论(通过判断a标记)
2013/09/28 PHP
php文件下载处理方法分析
2015/04/22 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
2019/12/11 PHP
火狐4、谷歌12不支持Jquery Validator的解决方法分享
2011/06/20 Javascript
JavaScript中的6种运算符总结
2014/10/16 Javascript
JS实现网页表格自动变大缩小的方法
2015/03/09 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
2016/01/22 Javascript
js改变css样式的三种方法推荐
2016/06/28 Javascript
一个仿微博登陆邮箱提示框js开发案例
2016/07/28 Javascript
JS中位置与大小的获取方法
2016/11/22 Javascript
Vue中引入样式文件的方法
2017/08/18 Javascript
详解easyui基于 layui.laydate日期扩展组件
2018/07/18 Javascript
react native 文字轮播的实现示例
2018/07/27 Javascript
JavaScript页面倒计时功能完整示例
2019/05/15 Javascript
vue子路由跳转实现tab选项卡
2019/07/24 Javascript
微信小程序iBeacon测距及稳定程序的实现解析
2019/07/31 Javascript
vue 对axios get pust put delete封装的实例代码
2020/01/05 Javascript
node.js开发辅助工具nodemon安装与配置详解
2020/02/06 Javascript
JS使用for in有序获取对象数据
2020/05/19 Javascript
使用js和canvas实现时钟效果
2020/09/08 Javascript
[01:09:24]Ti4开幕式
2014/07/19 DOTA
[36:41]完美世界DOTA2联赛循环赛FTD vs Magma第一场 10月30日
2020/10/31 DOTA
Python pandas常用函数详解
2018/02/07 Python
Pandas 数据处理,数据清洗详解
2018/07/10 Python
对python中的高效迭代器函数详解
2018/10/18 Python
使用python将图片按标签分入不同文件夹的方法
2018/12/08 Python
Python 通过监听端口实现唯一脚本运行方式
2020/05/05 Python
澳大利亚新奇小玩意网站:Yellow Octopus
2017/12/28 全球购物
介绍一下Linux内核的排队自旋锁
2014/08/27 面试题
即将毕业大学生自荐信
2014/01/24 职场文书
领导班子党的群众路线对照检查材料
2014/09/25 职场文书
2014年教学工作总结
2014/11/13 职场文书
初中英语教师个人工作总结
2015/02/09 职场文书
Mybatis是这样防止sql注入的
2021/12/06 Java/Android
Python Flask实现进度条
2022/05/11 Python
vue router 动态路由清除方式
2022/05/25 Vue.js