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倒计时简单实现方法
Dec 17 Javascript
原生javascript实现自动更新的时间日期
Feb 12 Javascript
搞定immutable.js详细说明
May 02 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
Feb 14 Javascript
从零学习node.js之mysql数据库的操作(五)
Feb 24 Javascript
webpack实现热加载自动刷新的方法
Jul 30 Javascript
详解JS中的this、apply、call、bind(经典面试题)
Sep 19 Javascript
JavaScript读写二进制数据的方法详解
Sep 09 Javascript
express如何解决ajax跨域访问session失效问题详解
Jun 20 Javascript
Node 代理访问的实现
Sep 19 Javascript
Vue项目接入Paypal实现示例详解
Jun 04 Javascript
vue实现input输入模糊查询的三种方式
Aug 14 Vue.js
编写更好的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 高手之路(一)
2006/10/09 PHP
PHP 危险函数解释 分析
2009/04/22 PHP
php ctype函数中文翻译和示例
2014/03/21 PHP
PHP基于array_unique实现二维数组去重
2020/07/14 PHP
ext实现完整的登录代码
2008/08/08 Javascript
js动态创建、删除表格示例代码
2013/08/07 Javascript
jquery序列化表单去除指定元素示例代码
2014/04/10 Javascript
点击表单提交时出现jQuery没有权限的解决方法
2014/07/23 Javascript
jQuery 选择同时包含两个class的元素的实现方法
2016/06/01 Javascript
JavaScript构建自己的对象示例
2016/11/29 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
2020/03/28 Javascript
用JavaScript做简易的购物车的代码示例
2017/10/20 Javascript
vue+webpack 打包文件 404 页面空白的解决方法
2018/02/28 Javascript
vue+element-ui动态生成多级表头的方法
2018/08/28 Javascript
Node.js中读取TXT文件内容fs.readFile()用法
2018/10/10 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
jQuery实现tab栏切换效果
2020/12/22 jQuery
[00:12]DAC2018 Miracle-站上中单舞台,他能否再写奇迹?
2018/04/06 DOTA
python3实现全角和半角字符转换的方法示例
2017/09/21 Python
Python中利用xpath解析HTML的方法
2018/05/14 Python
python3第三方爬虫库BeautifulSoup4安装教程
2018/06/19 Python
Python绘制并保存指定大小图像的方法
2019/01/10 Python
使用python制作一个为hex文件增加版本号的脚本实例
2019/06/12 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
2020/07/28 Python
浅析python 通⽤爬⾍和聚焦爬⾍
2020/09/28 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
2021/03/04 Python
HTML5 表单验证失败的提示语问题
2017/07/13 HTML / CSS
德国亚马逊官方网站:Amazon.de
2020/11/15 全球购物
为什么需要版本控制?
2013/08/08 面试题
文明学生标兵事迹
2014/01/21 职场文书
春节联欢会主持词
2014/03/24 职场文书
财务管理专业毕业生求职信
2014/06/02 职场文书
小学竞选班干部演讲稿
2014/08/20 职场文书
司法局2014法制宣传日活动总结
2014/11/01 职场文书
2014小学数学教研组工作总结
2014/12/06 职场文书
2016学雷锋优秀志愿者事迹材料
2016/02/25 职场文书