javascript实现导航栏分页效果

本文实例为大家分享了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、效果图

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 纯javascript实现分页(两种方法)

    先给大家贴效果图: 网上确实有很多分页的插件以及开源代码,单本是一个后台开发猿,前台css等样式还驾驭不住,所以就开始自己去写了.其实这个分页原理很简单,就是用ajax往后台传值(当前页码),后台使用limit进行分页. 因为这是我自己第一次动手用js写分页,写的应该也不是很完美,有些公共的没有抽取出来,但是用起来还是可以的,这块代码是可以把它当做公共的分页去处理的,我就是用 这块代码写了两个稍微不同一些的分页!公共的代码抽取的也差不多,主要就是ajax后台以及返回的值不同而已,只要把总页码的值

  • 非常不错的一个JS分页效果代码,值得研究

    本来想用网上找来的分页程序,不过都得做修改,感觉麻烦了,还是自己写一个好了,以后自己用的时候修改就方便了~~大家都多动手,自己写的才是最好的,日后想干什么的,做修改也是很容易的~~顺便也扩充一下自己的代码库~~ 补充一句,cpage是页面计数,应为全局变量,这样可以随处调用它,totalpage是总页数 JS静态分页程序 a:link,a:visited,a:hover,.current,#info{ border:1px solid #DDD; background:#F2F2F2; disp

  • JS 实现导航栏悬停效果(续)

    上次[JS-实现导航栏悬停]说到,导航栏悬停的那个页面在IE上运行的时候,会出导航栏不停的抖动问题. 解决方法如下: 将导航栏的定位方式由原来的absolute改为fixed,也不知道为什么改为fixed,就不抖了..-_-|| 复制代码 代码如下: div.navigation{ width: 800px; height: 40px; background: red; margin: 4px auto 0; top: 400px; left: 0px; position: fixed; } 为

  • Fullpage.js固定导航栏-实现定位导航栏

    FullPage.js 是一个简单而易于使用的插件,用来创建全屏滚动网站(也被称为单页网站).除了可以创建全屏滚动效果以外,也可以给网站添加一些水平的滑块效果.能够自适应不同的屏幕尺寸,包括平板电脑和移动设备. 开始制作自己的个人简历啦,决定要使用固定导航栏,又打算使用fullpage.js做全屏滚动. 仔细看了fullpage文档之后,发现不用额外写js代码就可以实现以下效果: 1.当滚动翻页时,导航栏也自动定位到这一页的标签 2.当然点击标签时,也是滚动到那一页而不是直接跳转的. 一.准备工

  • 一步步教大家编写酷炫的导航栏js+css实现

    一步一步的学习制作导航栏,文章末尾再做个综合页面,分享给大家一个炫酷的导航栏供大家参考,具体内容如下 1.当前页面高亮显示的导航栏 首先是HTML代码,很简单,ul+li实现菜单 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>导航栏一</title> </head> <body>

  • 纯js分页代码(简洁实用)

    复制代码 代码如下: //每页显示字数PageSize=5000;//分页模式flag=2;//1:根据字数自动分页 2:根据[NextPage]分页//默认页startpage = 1;//导航显示样式 0:常规 1:直接 3:下拉TopShowStyle = 1;DownShowStyle = 0; var currentSet,CutFlag,TotalByte,PageCount,key,tempText,tempPage; key=""; currentSet=0; var

  • JS 实现导航栏悬停效果

    JS-实现导航栏悬停 先布个局: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <met

  • js导航栏单击事件背景变换示例代码

    如下所示; 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv=

  • JS滚动到指定位置导航栏固定顶部

    最近整理一下之前做的一个项目,把滚动条动态固定顶部的代码整理出来和大家分享,上代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>js滚动到指定位置导航栏固定顶部</title> <style type="text/css"> body{height: 2500px; margin: 0; padding: 0

  • JavaScript实现鼠标点击导航栏变色特效

    废话不多说了,直接给大家贴js实现鼠标点击导航栏变色代码,具体代码如下所示: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head

随机推荐