分页栏的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 相关文章推荐
JS实现三个层重叠点击互相切换的方法
Oct 06 Javascript
怎么引入(调用)一个JS文件
May 26 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
Nov 09 Javascript
微信小程序 WebSocket详解及应用
Jan 21 Javascript
JS文件/图片从电脑里面拖拽到浏览器上传文件/图片
Mar 08 Javascript
JS实现的全排列组合算法示例
Oct 09 Javascript
利用JS实现一个同Excel表现的智能填充算法
Aug 13 Javascript
layui prompt 设置允许空白提交的方法
Sep 24 Javascript
Vue watch响应数据实现方法解析
Jul 10 Javascript
Vue中nprogress页面加载进度条的方法实现
Nov 13 Javascript
JavaScript canvas实现文字时钟
Jan 10 Javascript
js实现简单图片拖拽效果
Feb 22 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
电脑硬件及电脑配置知识大全
2020/03/17 数码科技
咖啡与水的关系
2021/03/03 冲泡冲煮
PHP+MYSQL开发工具及资源收藏
2007/01/02 PHP
php-accelerator网站加速PHP缓冲的方法
2008/07/30 PHP
PHP获取表单textarea数据中的换行问题
2010/09/10 PHP
关于PHP实现异步操作的研究
2013/02/03 PHP
PHP针对常规模板引擎中与CSS/JSON冲突的解决方法
2014/08/19 PHP
4种PHP异步执行的常用方式
2015/12/24 PHP
JS 获取span标签中的值的代码 支持ie与firefox
2009/08/24 Javascript
用Javascript评估用户输入密码的强度(Knockout版)
2011/11/30 Javascript
JQuery防止退格键网页后退的实现代码
2012/03/23 Javascript
js 本地预览的简单实现方法
2014/02/18 Javascript
javascript实现ecshop搜索框键盘上下键切换控制
2015/03/18 Javascript
Javascript函数的参数
2015/07/16 Javascript
原生Javascript和jQuery做轮播图简单例子
2016/10/11 Javascript
jquery 实现拖动文件上传加载进度条功能
2018/03/18 jQuery
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
vue实现的多页面项目如何优化打包的步骤详解
2020/07/19 Javascript
Python用Bottle轻量级框架进行Web开发
2016/06/08 Python
用python写个自动SSH登录远程服务器的小工具(实例)
2017/06/17 Python
python统计字母、空格、数字等字符个数的实例
2018/06/29 Python
对python3 Serial 串口助手的接收读取数据方法详解
2019/06/12 Python
Django上使用数据可视化利器Bokeh解析
2019/07/31 Python
Django框架HttpRequest对象用法实例分析
2019/11/01 Python
python中adb有什么功能
2020/06/07 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
使用CSS3制作饼状旋转载入效果的实例
2015/06/23 HTML / CSS
加拿大女装网上购物:Reitmans
2016/10/20 全球购物
Belvilla德国:在线预订度假屋
2018/04/10 全球购物
计算机专业毕业生自荐信范文
2014/03/06 职场文书
庆七一活动总结
2014/08/27 职场文书
教师廉洁自律个人总结
2015/02/10 职场文书
大学生个人简历自荐信
2015/03/06 职场文书
4S店收银员岗位职责
2015/04/07 职场文书
使用Python通过企业微信应用给企业成员发消息
2022/04/18 Python
SpringCloud超详细讲解Feign声明式服务调用
2022/06/21 Java/Android