分页栏的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 相关文章推荐
JObj预览一个JS的框架
Mar 13 Javascript
从JavaScript 到 JQuery (1)学习小结
Feb 12 Javascript
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
Jun 28 Javascript
通过JS获取用户本地图片路径并显示的代码
Feb 16 Javascript
javascript实现了照片拖拽点击置顶的照片墙代码
Apr 03 Javascript
Javascript 正则表达式校验数字的简单实例
Nov 02 Javascript
js绑定事件和解绑事件
Apr 27 Javascript
Vue列表页渲染优化详解
Jul 24 Javascript
Vue中保存数据到磁盘文件的方法
Sep 06 Javascript
vue如何搭建多页面多系统应用
Jun 17 Javascript
jquery轮播图插件使用方法详解
Jul 31 jQuery
vue 获取到数据但却渲染不到页面上的解决方法
Nov 19 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
PHP中foreach循环中使用引用要注意的地方
2011/01/02 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
2014/12/01 PHP
php头像上传预览实例代码
2017/05/02 PHP
PHP创建单例后台进程的方法示例
2017/05/23 PHP
php的优点总结 php有哪些优点
2019/07/19 PHP
JS获取页面input控件中所有text控件并追加样式属性
2013/02/25 Javascript
封装html的select标签的js操作实例
2013/07/02 Javascript
JavaScript Ajax Json实现上下级下拉框联动效果实例代码
2013/11/23 Javascript
javascript实现获取浏览器版本、操作系统类型
2015/01/29 Javascript
js简单倒计时实现代码
2016/04/30 Javascript
Node.js的npm包管理器基础使用教程
2016/05/26 Javascript
深入浅出 jQuery中的事件机制
2016/08/23 Javascript
基于jquery日历价格、库存等设置插件
2020/07/05 jQuery
vue 虚拟dom的patch源码分析
2018/03/01 Javascript
JS验证输入的是否是数字及保留几位小数问题
2018/05/09 Javascript
深入剖析Node.js cluster模块
2018/05/23 Javascript
基于React+Redux的SSR实现方法
2018/07/03 Javascript
解决一个微信号同时支持多个环境网页授权问题
2019/08/07 Javascript
vue实现axios图片上传功能
2019/08/20 Javascript
javascript实现滚动条效果
2020/03/24 Javascript
Vue 401配合Vuex防止多次弹框的案例
2020/11/11 Javascript
Python标准异常和异常处理详解
2015/02/02 Python
python 远程统计文件代码分享
2015/05/14 Python
Python实现的摇骰子猜大小功能小游戏示例
2017/12/18 Python
python pandas中DataFrame类型数据操作函数的方法
2018/04/08 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
2020/01/17 Python
django实现更改数据库某个字段以及字段段内数据
2020/03/31 Python
基于python纯函数实现井字棋游戏
2020/05/27 Python
解决html5中video标签无法播放mp4问题的办法
2017/05/07 HTML / CSS
时尚设计师手表:The Watch Cabin
2018/10/06 全球购物
村委会贫困证明范本
2014/09/17 职场文书
酒店厨房管理制度
2015/08/06 职场文书
《金钱的魔力》教学反思
2016/02/20 职场文书
导游词之河姆渡遗址博物馆
2019/10/10 职场文书
pytorch 预训练模型读取修改相关参数的填坑问题
2021/06/05 Python
opencv检测动态物体的实现
2021/07/21 Python