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判断iphone/android手机横竖屏模式的函数
Dec 20 Javascript
JS中eval函数的使用示例
Jul 21 Javascript
JavaScript字符串插入、删除、替换函数使用示例
Jul 25 Javascript
JS遍历Json字符串中键值对先转成JSON对象再遍历
Aug 15 Javascript
原生javascript实现隔行换色
Jan 04 Javascript
基于AngularJS实现页面滚动到底自动加载数据的功能
Oct 16 Javascript
jQuery easyui刷新当前tabs的方法
Sep 23 Javascript
JS控制TreeView的结点选择
Nov 11 Javascript
node通过express搭建自己的服务器
Sep 30 Javascript
JavaScript设计模式之建造者模式实例教程
Jul 02 Javascript
微信小程序网络请求实现过程解析
Nov 06 Javascript
vue+element-ui JYAdmin后台管理系统模板解析
Jul 28 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
农民和部队如何穿矿
2020/03/04 星际争霸
PHP中用接口、抽象类、普通基类实现“面向接口编程”与“耦合方法”简述
2011/03/23 PHP
一个显示效果非常不错的PHP错误、异常处理类
2014/03/21 PHP
JS查看对象功能代码
2008/04/25 Javascript
javascript hashtable 修正版 下载
2010/12/30 Javascript
jQuery的deferred对象使用详解
2011/08/20 Javascript
深入理解JavaScript系列(16) 闭包(Closures)
2012/04/12 Javascript
jquery ajax请求实例深入解析
2012/11/26 Javascript
拖动table标题实现改变td的大小(css+js代码)
2013/04/16 Javascript
jQuery中的$.ajax()方法应用
2014/05/06 Javascript
javascript实现倒计时跳转页面
2016/01/17 Javascript
jquery插件方式实现table查询功能的简单实例
2016/06/06 Javascript
View.post() 不靠谱的地方你知道多少
2017/08/29 Javascript
es6在react中的应用代码解析
2017/11/08 Javascript
vue实现动态显示与隐藏底部导航的方法分析
2019/02/11 Javascript
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
2019/04/17 Javascript
基于JS实现父组件的请求服务过程解析
2019/10/14 Javascript
python字符串连接方式汇总
2014/08/21 Python
python实现移位加密和解密
2019/03/22 Python
Python空间数据处理之GDAL读写遥感图像
2019/08/01 Python
tensorflow对图像进行拼接的例子
2020/02/05 Python
浅谈tensorflow 中的图片读取和裁剪方式
2020/06/30 Python
Python字符串三种格式化输出
2020/09/17 Python
如何用用Python将地址标记在地图上
2021/02/07 Python
让IE支持CSS3的不完全兼容方案
2014/09/19 HTML / CSS
英国护肤品购物网站:Beauty Expert
2016/08/19 全球购物
Vans英国官方网站:美国南加州的原创极限运动潮牌
2017/01/20 全球购物
西铁城美国官方网站:Citizen Watch美国
2019/11/08 全球购物
交通安全演讲稿
2014/01/07 职场文书
英文导游欢迎词
2014/01/11 职场文书
自考毕业自我鉴定
2014/03/18 职场文书
聘任书模板
2014/03/29 职场文书
弘扬焦裕禄精神走群众路线思想汇报
2014/09/12 职场文书
教师查摆问题自查报告
2014/10/11 职场文书
2014年远程教育工作总结
2014/12/09 职场文书
辩论会主持词
2015/07/03 职场文书