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 textarea自动增高并隐藏滚动条
Dec 16 Javascript
javascript数字时钟示例分享
Apr 23 Javascript
Yii2使用Bootbox插件实现自定义弹窗
Apr 02 Javascript
JS实现适合于后台使用的动画折叠菜单效果
Sep 21 Javascript
js实现密码强度检测【附示例】
Mar 30 Javascript
jquery弹出框插件jquery.ui.dialog用法分析
Aug 20 Javascript
jQuery基本过滤选择器用法示例
Sep 09 Javascript
jquery单击文字或图片内容放大并居中显示
Jun 23 jQuery
Bootstrap Table实现定时刷新数据的方法
Aug 13 Javascript
chosen实现省市区三级联动
Aug 16 Javascript
vue基于viewer实现的图片查看器功能
Apr 12 Javascript
react的hooks的用法详解
Oct 12 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 QRCODE生成彩色二维码的方法
2016/05/19 PHP
php生成无限栏目树
2017/03/16 PHP
PHP框架自动加载类文件原理详解
2017/06/06 PHP
用JavaScript事件串连执行多个处理过程的方法
2007/03/09 Javascript
jQuery select的操作实现代码
2009/05/06 Javascript
JavaScript 入门基础知识 想学习js的朋友可以参考下
2009/12/26 Javascript
js鼠标左右键 键盘值小结
2010/06/11 Javascript
JavaScript初学者需要了解10个小技巧
2010/08/25 Javascript
巧用局部变量提升javascript性能
2014/02/24 Javascript
jQuery简单图表peity.js使用示例
2014/05/02 Javascript
原生javascript实现图片滚动、延时加载功能
2015/01/12 Javascript
javascript实现图片循环渐显播放的方法
2015/02/24 Javascript
完美JQuery图片切换效果的简单实现
2016/07/21 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
2016/08/11 Javascript
D3.js进阶系列之CSV表格文件的读取详解
2017/06/06 Javascript
详解用node.js实现简单的反向代理
2017/06/26 Javascript
VueJs 搭建Axios接口请求工具
2017/11/20 Javascript
jQuery使用each遍历循环的方法
2018/09/19 jQuery
Vue框架里使用Swiper的方法示例
2018/09/20 Javascript
JavaScript迭代器的含义及用法
2019/06/21 Javascript
浅谈目前可以使用ES10的5个新特性
2019/06/25 Javascript
uni app仿微信顶部导航条功能
2019/09/17 Javascript
JavaScript实现好看的跟随彩色气泡效果
2020/02/06 Javascript
vue 使用v-for进行循环的实例代码详解
2020/02/19 Javascript
Python中random模块用法实例分析
2015/05/19 Python
Python卸载模块的方法汇总
2016/06/07 Python
python 异常处理总结
2016/10/18 Python
python如何让类支持比较运算
2018/03/20 Python
python和php哪个更适合写爬虫
2020/06/22 Python
Python从文件中读取数据的方法步骤
2020/11/18 Python
英国儿童设计师服装和玩具购物网站:Zac & Lulu
2020/10/19 全球购物
.NET里面什么时候需要调用垃圾回收
2015/06/01 面试题
抗洪救灾标语
2014/10/08 职场文书
语文复习计划
2015/01/19 职场文书
学生个人总结范文
2015/02/15 职场文书
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
2022/06/25 Servers