javascript实现导航栏分页效果


Posted in Javascript onJune 27, 2019

本文实例为大家分享了js实现导航栏分页效果的具体代码,供大家参考,具体内容如下

1、结构搭建HTML代码

<div class="page"></div>

2、页面修饰的css样式代码

.page{
width:500px;margin:100px auto;color: #ccc;
}.page a{
display: inline-block;color: #428bca;height: 25px;
line-height: 25px;padding: 0 10px;border: 1px solid #ddd;
margin: 0 2px;border-radius: 4px;vertical-align: middle;
}.page a:hover{
border: 1px solid #428bca;
}.page .current{
display: inline-block;height: 25px;line-height: 25px;
padding: 0 10px;margin: 0 2px;color: #fff;
background-color: #428bca;border: 1px solid #428bca;
border-radius: 4px;vertical-align: middle;
}.page .disabled{
display: inline-block;height: 25px;line-height: 25px;
padding: 0 10px;margin: 0 2px;color: #bfbfbf;
background: #f2f2f2;border: 1px solid #bfbfbf;
border-radius: 4px;vertical-align: middle;
}

3、js代码

// 入口函数 接收参数为扩展插件父级及参数
function init(dom, args) {
 // 如果当前显示页数小于总页数
 if (args.current <= args.pageCount) {
 // 填充html页面内容
 fillHtml(dom, args);
 // 绑定事件
 bindEvent(dom, args);
 } else {
 alert('请输入正确页数')
 }
}
function fillHtml(dom, args) {
 // 清空dom元素
 dom.empty();
 //上一页
 if (args.current > 1) {
 dom.append('<a href = "#" class="prevPage">上一页</a>');
 } else {
 dom.remove('.prevPage');
 dom.append('<span class="disabled">上一页</span>');
 }
 //中间页数
 if (args.current != 1 && args.current >= 4 && args.pageCount != 4) {
 dom.append('<a href = "#" class="tcdNumber">' + 1 + '</a>');
 }
 if (args.current - 2 > 2 && args.current <= args.pageCount && args.pageCount > 5) {
 dom.append('<span>...</span>');
 }
 // 中间页数利用循环生成
 var start = args.current - 2;
 var end = args.current + 2;
 for (; start <= end; start++) {
 if (start <= args.pageCount && start >= 1) {
  if (start != args.current) {
  dom.append('<a href = "#" class="tcdNumber">' + start + '</a>');
  } else {
  dom.append('<span class="current">' + start + '</span>');
  }
 }
 }
 // 判断临界值插入省略号
 if (args.current + 2 < args.pageCount - 1 && args.pageCount > 5) {
 dom.append('<span>...</span>')
 }
 // 将中间数值插入html内容中
 if (args.current != args.pageCount && args.current < args.pageCount - 2 && args.pageCount != 4) {
 dom.append('<a href="#" rel="external nofollow" class="tcdNumber">' + args.pageCount + '</a>');
 }
 //下一页 根据当前页数确定按钮显示状态
 if (args.current < args.pageCount) {
 dom.append('<a href = "#" class="nextPage">下一页</a>');
 } else {
 dom.remove('.nextPage');
 dom.append('<span class="disabled">下一页</span>');
 }
}
// 点击事件 点击每一页相当于重新调用fillHtml填入参数 修改当前的显示值
function bindEvent(obj, args) {
 //点击页码
 obj.on('click', '.tcdNumber', function () {
 var current = parseInt($(this).text());
 changePage(obj, args, current);
 })
 //上一页
 // a.prevPage 规定只能添加到指定的子元素上的事件处理程序
 obj.on('click', '.prevPage', function () {
 var current = parseInt(obj.children('.current').text());
 changePage(obj, args, current - 1);
 })
 //下一页
 obj.on('click', '.nextPage', function () {
 var current = parseInt(obj.children('.current').text());
 changePage(obj, args, current + 1);
 })
}
// 改变html内容
function changePage(dom, args, page) {
 fillHtml(dom, { 'current': page, 'pageCount': args.pageCount });
 if (typeof (args.backFn == "function")) {
 args.backFn(page);
 }
}
// 利用jquery中的extend方法扩展插件 将插件扩展到jquery的原型上 扩展实例插件
$.fn.createPage = function (options) {
 // 拼接参数 即如果调用插件未传入参数选用默认参数 
 // 如果传入参数 利用传入参数覆盖默认参数
 var args = $.extend({
 pageCount: 5,
 current: 2,
 backFn: function () { }
 }, options);
 init(this, args)// 调用入口函数
}
// 调用插件 传入参数
$('.page').createPage({
 pageCount: 13,// 总页数 
 current: 3,// 默认选中页数
 // 点击选中页数后 回调
 backFn: function (p) {
 }
})

4、效果图

javascript实现导航栏分页效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js实现ASP分页函数 HTML分页函数
Sep 22 Javascript
从面试题学习Javascript 面向对象(创建对象)
Mar 30 Javascript
jquery mobile的触控点击事件会多次触发问题的解决方法
May 08 Javascript
详解JavaScript的流程控制语句
Nov 30 Javascript
浏览器兼容性问题大汇总
Dec 17 Javascript
JS中如何实现点击a标签返回页面顶部的问题
Jan 19 Javascript
原生js FileReader对象实现图片上传本地预览效果
Mar 27 Javascript
JS基于ES6新特性async await进行异步处理操作示例
Feb 02 Javascript
10个最受欢迎的 JavaScript框架(推荐)
Apr 24 Javascript
bootstrap datepicker的基本使用教程
Jul 09 Javascript
原生javascript运动函数的封装示例【匀速、抛物线、多属性的运动等】
Feb 23 Javascript
如何在JavaScript中使用localStorage详情
Feb 04 Javascript
编写更好的JavaScript条件式和匹配条件的技巧(小结)
Jun 27 #Javascript
原生js实现抽奖小游戏
Jun 27 #Javascript
JavaScript实现图片放大镜效果
Jun 27 #Javascript
详解Jest结合Vue-test-utils使用的初步实践
Jun 27 #Javascript
微信小程序自定义组件实现环形进度条
Nov 17 #Javascript
vue + typescript + 极验登录验证的实现方法
Jun 27 #Javascript
JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作整理总结
Jun 27 #Javascript
You might like
PHP函数utf8转gb2312编码
2006/12/21 PHP
PHP学习笔记之php文件操作
2016/06/03 PHP
win10 apache配置虚拟主机后localhost无法使用的解决方法
2018/01/27 PHP
JS函数验证总结(方便js客户端输入验证)
2010/10/29 Javascript
js动画(animate)简单引擎代码示例
2012/12/04 Javascript
js多级树形弹出一个小窗口层(非常好用)实例代码
2013/03/19 Javascript
JS如何判断移动端访问设备并解析对应CSS
2013/11/27 Javascript
实例讲解JS中数组Array的操作方法
2014/05/09 Javascript
DOM操作和jQuery实现选项移动操作的简单实例
2016/06/07 Javascript
ionic2打包android时gradle无法下载的解决方法
2017/04/05 Javascript
easyUI下拉列表点击事件使用方法
2017/05/18 Javascript
vue中如何实现变量和字符串拼接
2017/06/19 Javascript
node.js 发布订阅模式的实例
2017/09/10 Javascript
Express进阶之log4js实用入门指南
2018/02/10 Javascript
ZK中使用JS读取客户端txt文件内容问题
2019/11/07 Javascript
原生js实现弹窗消息动画
2020/11/20 Javascript
python PIL模块与随机生成中文验证码
2016/02/27 Python
对numpy中array和asarray的区别详解
2018/04/17 Python
python 通过字符串调用对象属性或方法的实例讲解
2018/04/21 Python
使用python实现http及ftp服务进行数据传输的方法
2018/10/26 Python
从DataFrame中提取出Series或DataFrame对象的方法
2018/11/10 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
2019/04/17 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
2019/04/25 Python
一篇文章搞定Python操作文件与目录
2019/08/13 Python
PyTorch中的Variable变量详解
2020/01/07 Python
python上传时包含boundary时的解决方法
2020/04/08 Python
Python判断三段线能否构成三角形的代码
2020/04/12 Python
Django Form常用功能及代码示例
2020/10/13 Python
国际书籍零售商:Wordery
2017/11/01 全球购物
迟到检讨书1000字
2014/01/15 职场文书
《黄河颂》教学反思
2014/02/07 职场文书
颁奖晚会主持词
2014/03/25 职场文书
2014年国庆节演讲稿精选范文1500字
2014/09/25 职场文书
无子女夫妻离婚协议书(4篇)
2014/10/20 职场文书
手残删除python之后的补救方法
2021/06/26 Python
Win11 Dev 预览版25174.1000发布 (附更新修复内容汇总)
2022/08/05 数码科技