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 相关文章推荐
jQuery对象和DOM对象相互转化
Apr 24 Javascript
JS函数验证总结(方便js客户端输入验证)
Oct 29 Javascript
上传图片js判断图片尺寸和格式兼容IE
Sep 01 Javascript
手机端页面rem宽度自适应脚本
May 20 Javascript
介绍JavaScript中Math.abs()方法的使用
Jun 14 Javascript
vue中七牛插件使用的实例代码
Jul 28 Javascript
在Vue组件中获取全局的点击事件方法
Sep 06 Javascript
Vue自定义属性实例分析
Feb 23 Javascript
js最实用string(字符串)类型的使用及截取与拼接详解
Apr 26 Javascript
js类的继承定义与用法分析
Jun 21 Javascript
为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置
Sep 29 Javascript
基于vue实现微博三方登录流程解析
Nov 04 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管理内存函数 memory_get_usage()使用介绍
2012/09/23 PHP
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
JS cookie中文乱码解决方法
2014/01/28 Javascript
jQuery操作表格(table)的常用方法、技巧汇总
2014/04/12 Javascript
jquery进行数组遍历如何跳出当前的each循环
2014/06/05 Javascript
Egret引擎开发指南之运行项目
2014/09/03 Javascript
Javascript验证Visa和MasterCard信用卡号的方法
2015/07/27 Javascript
javascript动画系列之模拟滚动条
2016/12/13 Javascript
es6学习笔记之Async函数基本教程
2017/05/11 Javascript
vue2实现搜索结果中的搜索关键字高亮的代码
2018/08/29 Javascript
详解vue更改头像功能实现
2019/04/28 Javascript
javascript中的闭包概念与用法实践分析
2019/07/26 Javascript
Vue中通过vue-router实现命名视图的问题
2020/04/23 Javascript
[00:34]DOTA2上海特级锦标赛 VG战队宣传片
2016/03/04 DOTA
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
Python中MySQLdb和torndb模块对MySQL的断连问题处理
2015/11/09 Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
2015/12/31 Python
使用Eclipse如何开发python脚本
2018/04/11 Python
python使用循环打印所有三位数水仙花数的实例
2018/11/13 Python
python实现狄克斯特拉算法
2019/01/17 Python
python matplotlib库绘制散点图例题解析
2019/08/10 Python
tensorboard 可以显示graph,却不能显示scalar的解决方式
2020/02/15 Python
浅谈keras2 predict和fit_generator的坑
2020/06/17 Python
大学生毕业鉴定
2014/01/31 职场文书
网络工程师自荐书范文
2014/04/01 职场文书
竞选团支书演讲稿
2014/04/28 职场文书
自主招生推荐信范文
2014/05/10 职场文书
上党课的心得体会
2014/09/02 职场文书
党的群众路线教育实践活动查摆问题自查报告
2014/10/10 职场文书
会计工作总结范文2014
2014/12/23 职场文书
助学感谢信范文
2015/01/21 职场文书
努力工作保证书
2015/02/28 职场文书
2015年售后服务工作总结
2015/04/25 职场文书
小鞋子观后感
2015/06/05 职场文书
高三生物教学反思
2016/02/22 职场文书
基于Python实现一个春节倒计时脚本
2022/01/22 Python