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 相关文章推荐
制作特殊字的脚本
Jun 26 Javascript
CSS常用网站布局实例
Apr 03 Javascript
兼容FireFox 的 js 日历 支持时间的获取
Mar 04 Javascript
js select常用操作控制代码
Mar 16 Javascript
JS遮罩层效果 兼容ie firefox jQuery遮罩层
Jul 26 Javascript
js中Math之random,round,ceil,floor的用法总结
Dec 26 Javascript
使用GruntJS构建Web程序之合并压缩篇
Jun 06 Javascript
javaScript中slice函数用法实例分析
Jun 08 Javascript
javascript日期操作详解(脚本之家整理)
Sep 05 Javascript
基于JavaScript代码实现随机漂浮图片广告
Jan 05 Javascript
关于在vue 中使用百度ueEditor编辑器的方法实例代码
Sep 14 Javascript
JS使用Dijkstra算法求解最短路径
Jan 17 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
mysql 全文搜索 技巧
2007/04/27 PHP
php利用scws实现mysql全文搜索功能的方法
2014/12/25 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
初窥JQuery(二)事件机制(2)
2010/12/06 Javascript
jQuery EasyUI API 中文文档 - Calendar日历使用
2011/10/19 Javascript
JQuery中对Select的option项的添加、删除、取值
2013/08/25 Javascript
JavaScript函数模式详解
2014/11/07 Javascript
jQuery oLoader实现的加载图片和页面效果
2015/03/14 Javascript
写给小白的JavaScript引擎指南
2015/12/04 Javascript
jQuery+CSS3文字跑马灯特效的简单实现
2016/06/25 Javascript
javascript作用域链与执行环境详解
2017/03/25 Javascript
JS实现禁止高频率连续点击的方法【基于ES6语法】
2017/04/25 Javascript
详解angular笔记路由之angular-router
2017/09/12 Javascript
Bootstrap 中data-[*] 属性的整理
2018/03/13 Javascript
JS实现音乐钢琴特效
2020/01/06 Javascript
jQuery实现王者荣耀手风琴效果
2020/01/17 jQuery
[02:41]2015国际邀请赛中国区预选赛观战指南
2015/05/20 DOTA
wxpython 学习笔记 第一天
2009/03/16 Python
python中文乱码的解决方法
2013/11/04 Python
Python新手入门最容易犯的错误总结
2017/04/24 Python
python清除函数占用的内存方法
2018/06/25 Python
Python小进度条显示代码
2019/03/05 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
Python之数据序列化(json、pickle、shelve)详解
2019/08/30 Python
用sleep间隔进行python反爬虫的实例讲解
2020/11/30 Python
Space NK英国站:英国热门美妆网站
2017/12/11 全球购物
Nordgreen英国官网:斯堪的纳维亚设计师手表
2018/10/24 全球购物
印度民族服装购物网站:BIBA
2019/08/05 全球购物
土木工程毕业生推荐信
2013/10/28 职场文书
共产党员公开承诺书
2014/03/25 职场文书
自强之星事迹材料
2014/05/12 职场文书
介绍信样本
2015/01/31 职场文书
慰问信模板
2015/02/14 职场文书
2015年幼师工作总结
2015/04/28 职场文书
2016春季幼儿园开学寄语
2015/12/03 职场文书
Nginx配置并兼容HTTP实现代码解析
2021/03/31 Servers