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 css float属性的特殊写法
Nov 13 Javascript
JavaScript入门教程(2) JS基础知识
Jan 31 Javascript
js对文章内容进行分页示例代码
Mar 05 Javascript
js监听鼠标点击和键盘点击事件并自动跳转页面
Sep 24 Javascript
jQuery中parent()方法用法实例
Jan 07 Javascript
jQuery焦点控制图层展示延迟隐藏的方法
Mar 09 Javascript
jQuery设置Cookie及删除Cookie实例分析
Apr 15 Javascript
jQuery实现鼠标滑过预览图片大图效果的方法
Apr 26 jQuery
Vue2.0 事件的广播与接收(观察者模式)
Mar 14 Javascript
利用Promise自定义一个GET请求的函数示例代码
Mar 20 Javascript
JavaScript 自定义html元素鼠标右键菜单功能
Dec 02 Javascript
不依任何赖第三方,单纯用vue实现Tree 树形控件的案例
Sep 21 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连接数据库代码应用分析
2011/05/29 PHP
PHP 日,周,月点击排行统计
2012/01/11 PHP
关于更改Zend Studio/Eclipse代码风格主题的介绍
2013/06/23 PHP
深入解析PHP的Yii框架中的缓存功能
2016/03/29 PHP
jquery+thinkphp实现跨域抓取数据的方法
2016/10/15 PHP
PHP利用超级全局变量$_POST来接收表单数据的实例
2016/11/05 PHP
yii2 commands模式以及配置crontab定时任务的方法
2017/08/19 PHP
jQuery表格行换色的三种实现方法
2011/06/27 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
bootstrapValidator自定验证方法写法
2016/12/01 Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
2017/04/21 Javascript
javascript编写简易计算器
2017/05/06 Javascript
LayUI数据接口返回实体封装的例子
2019/09/12 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
2020/02/03 Javascript
vue+iview分页组件的封装
2020/11/17 Vue.js
[04:44]DOTA2英雄梦之声_第12期_矮人直升机
2014/06/21 DOTA
Python合并字符串的3种方法
2015/05/21 Python
Python中操作符重载用法分析
2016/04/29 Python
python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
2017/12/20 Python
解决每次打开pycharm直接进入项目的问题
2018/10/28 Python
浅谈pycharm的xmx和xms设置方法
2018/12/03 Python
Python利用字典破解WIFI密码的方法
2019/02/27 Python
python等差数列求和公式前 100 项的和实例
2020/02/25 Python
python 画条形图(柱状图)实例
2020/04/24 Python
Python格式化输出--%s,%d,%f的代码解析
2020/04/29 Python
删除pycharm鼠标右键快捷键打开项目的操作
2021/01/16 Python
css3类选择器之结合元素选择器和多类选择器用法
2017/03/09 HTML / CSS
专注澳大利亚特产和新西兰特产的澳洲中文网:0061澳洲制造
2019/03/24 全球购物
JACK & JONES荷兰官网:男士服装和鞋子
2021/03/07 全球购物
餐饮主管岗位职责
2013/12/10 职场文书
事业单位辞职信范文
2014/01/19 职场文书
农村婚庆司仪主持词
2014/03/15 职场文书
2014年班组长工作总结
2014/11/20 职场文书
法院执行局工作总结
2015/08/11 职场文书
Win10系统下配置Java环境变量
2021/06/13 Java/Android
SQL基础查询和LINQ集成化查询
2022/01/18 MySQL