分页栏的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 相关文章推荐
IE浏览器打印的页眉页脚设置解决方法
Dec 08 Javascript
AJAX 网页保留浏览器前进后退等功能
Feb 12 Javascript
javascript操作excel生成报表全攻略
May 04 Javascript
Javascript中this的用法详解
Sep 22 Javascript
Js实现自定义右键行为
Mar 26 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
Jan 08 Javascript
js仿手机页面文件下拉刷新效果
Oct 14 Javascript
JS SetInterval 代码实现页面轮询
Aug 11 Javascript
原生JS获取元素的位置与尺寸实现方法
Oct 18 Javascript
vue2实现可复用的轮播图carousel组件详解
Nov 27 Javascript
vue+element 模态框表格形式的可编辑表单实现
Jun 07 Javascript
three.js 制作动态二维码的示例代码
Jul 31 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通用分页类page.php[仿google分页]
2008/08/31 PHP
PHP 身份证号验证函数
2009/05/07 PHP
详解PHP swoole process的使用方法
2017/08/26 PHP
PHP获取MySQL执行sql语句的查询时间方法
2018/08/21 PHP
jquery.blockUI.js上传滚动等待效果实现思路及代码
2013/03/18 Javascript
js+cookies实现悬浮购物车的方法
2015/05/25 Javascript
javascript检查某个元素在数组中的索引值
2016/03/30 Javascript
Angular 4.x 动态创建表单实例
2017/04/25 Javascript
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
nodejs同步调用获取mysql数据时遇到的大坑
2019/03/02 NodeJs
使用Element的InfiniteScroll 无限滚动组件报错的解决
2020/07/27 Javascript
JavaScript中CreateTextFile函数
2020/08/30 Javascript
python在windows下实现备份程序实例
2014/07/04 Python
python实现带错误处理功能的远程文件读取方法
2015/04/29 Python
Python中getattr函数和hasattr函数作用详解
2016/06/14 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
pandas数据处理之绘图的实现
2020/06/15 Python
CSS3 box-sizing属性
2009/04/17 HTML / CSS
英国工作场所设备购买网站:Slingsby
2019/05/03 全球购物
美国小蜜蜂Burt’s Bees德国官网:天然唇部、皮肤和身体护理产品
2020/06/14 全球购物
软件配置管理有什么好处
2015/04/15 面试题
vue路由实现登录拦截
2021/03/24 Vue.js
教你打造完美的创业计划书
2014/01/06 职场文书
加工操作管理制度
2014/01/19 职场文书
大学军训感想
2014/02/12 职场文书
房屋委托书范本
2014/04/04 职场文书
2015年语文教研组工作总结
2015/05/23 职场文书
校园安全主题班会
2015/08/12 职场文书
2016计算机专业毕业生自荐信
2016/01/28 职场文书
小学2016年第十八届推普周活动总结
2016/04/05 职场文书
2019年最新七夕唯美祝福语(60条)
2019/07/22 职场文书
python 实现定时任务的四种方式
2021/04/01 Python
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
2021/05/27 Python
Java 使用类型为Object的变量指向任意类型的对象
2022/04/13 Java/Android
nginx静态资源的服务器配置方法
2022/07/07 Servers