jQuery实现导航滚动到指定内容效果完整实例【附demo源码下载】


Posted in Javascript onSeptember 20, 2016

本文实例讲述了jQuery实现导航滚动到指定内容效果。分享给大家供大家参考,具体如下:

做页面制作也有两年了,其中也做过许多页面效果,有简单的,也有复杂的,今天就来分享一个导航滚动到内容的特效。

平时我们做导航滚动到内容都是通过锚点来做,刷的一下就直接跳到内容了,没有一丝的滚动效果,而且 url 链接最后会有“小尾巴”,今天我就介绍一款 jquery 做的滚动的特效,既可以设置滚动速度,又可以在 url 链接上没有“小尾巴”。

html:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
  <meta charset="UTF-8">
  <title></title>
  <style type="text/css">
  #a{height:800px;background:red;}
  #b{height:800px;background:green;}
  #c{height:800px;background:black;}
  #d{height:800px;background:yellow;}
  </style>
</head>
<body>
  <div class="link">
    <a href="javascript:;" onclick="scroll('a')">1111111111</a>
    <a href="javascript:;" onclick="scroll('b')">2222222222</a>
    <a href="javascript:;" onclick="scroll('c')">3333333333</a>
    <a href="javascript:;" onclick="scroll('d')">4444444444</a>
  </div>
  <div id="a"></div>
  <div id="b"></div>
  <div id="c"></div>
  <div id="d"></div>
</body>
</html>
<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="jquery.scrollto.js"></script>
<script type="text/javascript">
function scroll(id){
  $("#"+id).ScrollTo(1000);
}
</script>

jquery.scrollto.js:

jQuery.getPos = function (e)
{
  var l = 0;
  var t = 0;
  var w = jQuery.intval(jQuery.css(e,'width'));
  var h = jQuery.intval(jQuery.css(e,'height'));
  var wb = e.offsetWidth;
  var hb = e.offsetHeight;
  while (e.offsetParent){
    l += e.offsetLeft + (e.currentStyle?jQuery.intval(e.currentStyle.borderLeftWidth):0);
    t += e.offsetTop + (e.currentStyle?jQuery.intval(e.currentStyle.borderTopWidth):0);
    e = e.offsetParent;
  }
  l += e.offsetLeft + (e.currentStyle?jQuery.intval(e.currentStyle.borderLeftWidth):0);
  t += e.offsetTop + (e.currentStyle?jQuery.intval(e.currentStyle.borderTopWidth):0);
  return {x:l, y:t, w:w, h:h, wb:wb, hb:hb};
};
jQuery.getClient = function(e)
{
  if (e) {
    w = e.clientWidth;
    h = e.clientHeight;
  } else {
    w = (window.innerWidth) ? window.innerWidth : (document.documentElement && document.documentElement.clientWidth) ? document.documentElement.clientWidth : document.body.offsetWidth;
    h = (window.innerHeight) ? window.innerHeight : (document.documentElement && document.documentElement.clientHeight) ? document.documentElement.clientHeight : document.body.offsetHeight;
  }
  return {w:w,h:h};
};
jQuery.getScroll = function (e) 
{
  if (e) {
    t = e.scrollTop;
    l = e.scrollLeft;
    w = e.scrollWidth;
    h = e.scrollHeight;
  } else {
    if (document.documentElement && document.documentElement.scrollTop) {
      t = document.documentElement.scrollTop;
      l = document.documentElement.scrollLeft;
      w = document.documentElement.scrollWidth;
      h = document.documentElement.scrollHeight;
    } else if (document.body) {
      t = document.body.scrollTop;
      l = document.body.scrollLeft;
      w = document.body.scrollWidth;
      h = document.body.scrollHeight;
    }
  }
  return { t: t, l: l, w: w, h: h };
};
jQuery.intval = function (v)
{
  v = parseInt(v);
  return isNaN(v) ? 0 : v;
};
jQuery.fn.ScrollTo = function(s) {
  o = jQuery.speed(s);
  return this.each(function(){
    new jQuery.fx.ScrollTo(this, o);
  });
};
jQuery.fx.ScrollTo = function (e, o)
{
  var z = this;
  z.o = o;
  z.e = e;
  z.p = jQuery.getPos(e);
  z.s = jQuery.getScroll();
  z.clear = function(){clearInterval(z.timer);z.timer=null};
  z.t=(new Date).getTime();
  z.step = function(){
    var t = (new Date).getTime();
    var p = (t - z.t) / z.o.duration;
    if (t >= z.o.duration+z.t) {
      z.clear();
      setTimeout(function(){z.scroll(z.p.y, z.p.x)},13);
    } else {
      st = ((-Math.cos(p*Math.PI)/2) + 0.5) * (z.p.y-z.s.t) + z.s.t;
      sl = ((-Math.cos(p*Math.PI)/2) + 0.5) * (z.p.x-z.s.l) + z.s.l;
      z.scroll(st, sl);
    }
  };
  z.scroll = function (t, l){window.scrollTo(l, t)};
  z.timer=setInterval(function(){z.step();},13);
};

调用方法:

$(id).ScrollTo(speed);
//id是跳转到内容的id;speed是滚动速度,值越大,滚动越慢

完整实例代码点击此处本站下载。

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
用JS将搜索的关键字高亮显示实现代码
Nov 08 Javascript
js实现省市联动效果的简单实例
Feb 10 Javascript
自己动手手写jQuery插件总结
Jan 20 Javascript
javascript数据结构之双链表插入排序实例详解
Nov 25 Javascript
全面理解闭包机制
Jul 11 Javascript
AngularJS入门教程之ng-class 指令用法
Aug 01 Javascript
jQuery实现页面滚动时智能浮动定位
Jan 08 Javascript
Bootstrap进度条学习使用
Feb 09 Javascript
vue使用监听实现全选反选功能
Jul 06 Javascript
当vue路由变化时,改变导航栏的样式方法
Aug 22 Javascript
vue+ESLint 配置保存 自动格式化代码
Mar 17 Javascript
浅谈JavaScript 声明提升
Sep 14 Javascript
jquery实现的回旋滚动效果完整实例【附demo源码下载】
Sep 20 #Javascript
移动端使用localStorage缓存Js和css文的方法(web开发)
Sep 20 #Javascript
关于Javascript中defer和async的区别总结
Sep 20 #Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
Sep 20 #Javascript
javascript字符串对象常用api函数小结(连接,替换,分割,转换等)
Sep 20 #Javascript
JQuery手速测试小游戏实现思路详解
Sep 20 #Javascript
javascript cookie基础应用之记录用户名的方法
Sep 20 #Javascript
You might like
PHP 翻页 实例代码
2009/08/07 PHP
PHP人民币金额数字转中文大写的函数代码
2013/02/27 PHP
thinkphp使用literal防止模板标签被解析的方法
2014/11/22 PHP
php自定义hash函数实例
2015/05/05 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
2020/01/23 PHP
使弱类型的语言JavaScript变强势
2009/06/22 Javascript
jquery ajax 登录验证实现代码
2009/09/23 Javascript
jQuery+css实现图片滚动效果(附源码)
2013/03/18 Javascript
jquery跟js初始化加载的多种方法及区别介绍
2014/04/02 Javascript
Javascript中匿名函数的调用与写法实例详解(多种)
2016/01/26 Javascript
Vue.js每天必学之组件与组件间的通信
2016/09/08 Javascript
基于Jquery Ajax type的4种类型(详解)
2017/08/02 jQuery
js求数组中全部数字可拼接出的最大整数示例代码
2017/08/25 Javascript
如何开发出更好的JavaScript模块
2017/12/22 Javascript
layui实现点击按钮给table添加一行
2018/08/10 Javascript
Vue+scss白天和夜间模式切换功能的实现方法
2021/01/05 Vue.js
python中元类用法实例
2014/10/10 Python
在Python中使用M2Crypto模块实现AES加密的教程
2015/04/08 Python
使用python实现knn算法
2017/12/20 Python
python try except 捕获所有异常的实例
2018/10/18 Python
Python检查和同步本地时间(北京时间)的实现方法
2018/12/03 Python
详解Python的循环结构知识点
2019/05/20 Python
python 字符串追加实例
2019/07/20 Python
python之MSE、MAE、RMSE的使用
2020/02/24 Python
使用npy转image图像并保存的实例
2020/07/01 Python
python上下文管理器异常问题解决方法
2021/02/07 Python
用canvas做一个DVD待机动画的实现代码
2019/04/12 HTML / CSS
世界首屈一指的钓鱼用品商店:TackleDirect
2016/07/26 全球购物
数据库什么时候应该被重组
2012/11/02 面试题
迎七一演讲稿
2014/09/12 职场文书
广告设计专业毕业生自我鉴定
2014/09/27 职场文书
新员工考核评语
2014/12/31 职场文书
通报表扬范文
2015/01/17 职场文书
谢师宴学生致辞
2015/07/27 职场文书
创业计划书之个人工作室
2019/08/22 职场文书
Ajax是什么?Ajax高级用法之Axios技术
2021/04/21 Javascript