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 相关文章推荐
JavaScript几种形式的树结构菜单
May 10 Javascript
jquery创建一个ajax关键词数据搜索实现思路
Feb 26 Javascript
JS 加入收藏夹的代码(主流浏览器通用)
May 13 Javascript
jQuery 如何先创建、再修改、后添加DOM元素
May 20 Javascript
jquery实现两边飘浮可关闭的对联广告
Nov 27 Javascript
jquery实现二级导航下拉菜单效果
Dec 18 Javascript
json格式的javascript对象用法分析
Jul 04 Javascript
javascript字符串对象常用api函数小结(连接,替换,分割,转换等)
Sep 20 Javascript
jQuery焦点图轮播效果实现方法
Dec 19 Javascript
Canvas实现放射线动画效果
Feb 15 Javascript
javascript 面向对象实战思想分享
Sep 07 Javascript
解决ant Design中this.props.form.validateFields未执行的问题
Oct 27 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 图片上传实现代码 带详细注释
2010/04/29 PHP
ThinkPHP实现将本地文件打包成zip下载
2014/06/26 PHP
php检查字符串中是否有外链的方法
2015/07/29 PHP
PHP实现更改hosts文件的方法示例
2017/08/08 PHP
PHP实现的AES 128位加密算法示例
2019/09/16 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
2020/05/29 PHP
jquery获取tr中控件值并操作tr实现思路
2013/03/27 Javascript
目前流行的JavaScript库的介绍及对比
2013/09/29 Javascript
jquery数组封装使用方法分享(jquery数组遍历)
2014/03/25 Javascript
关于jQuery EasyUI 中刷新Tab选项卡后一个页面变形的解决方法
2017/03/02 Javascript
js获取浏览器的各种属性
2017/04/27 Javascript
微信小程序 实现动态显示和隐藏某个控件
2017/04/27 Javascript
Angular使用ControlValueAccessor创建自定义表单控件
2019/03/08 Javascript
ES6模板字符串和标签模板的应用实例分析
2019/06/25 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
2020/04/22 Javascript
详解Vue中的watch和computed
2020/11/09 Javascript
详解vite2.0配置学习(typescript版本)
2021/02/25 Javascript
python实现的系统实用log类实例
2015/06/30 Python
python使用tensorflow保存、加载和使用模型的方法
2018/01/31 Python
python使用xslt提取网页数据的方法
2018/02/23 Python
python使用Matplotlib画饼图
2018/09/25 Python
python中的&amp;&amp;及||的实现示例
2019/08/07 Python
python爬取王者荣耀全皮肤的简单实现代码
2020/01/31 Python
Python基于pyjnius库实现访问java类
2020/07/31 Python
Python判断字符串是否为合法标示符操作
2020/09/03 Python
Python爬取股票信息,并可视化数据的示例
2020/09/26 Python
matplotlib教程——强大的python作图工具库
2020/10/15 Python
详解Python利用configparser对配置文件进行读写操作
2020/11/03 Python
解决import tensorflow导致jupyter内核死亡的问题
2021/02/06 Python
18-35岁旅游团的全球领导者:Contiki
2017/02/08 全球购物
PHP如何去执行一个SQL语句
2016/03/05 面试题
比较一下entity bean和session bean
2013/12/27 面试题
值传递还是引用传递
2015/02/08 面试题
幼儿园中秋节活动方案
2014/02/06 职场文书
党建示范点实施方案
2014/03/12 职场文书
保护环境建议书作文400字
2015/09/14 职场文书