`
flyduck
  • 浏览: 47951 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

用 Javascript实现锚点平滑移动.呵呵.刚刚发现一篇js文章,写的不错,偷过来收藏一下

阅读更多
js 代码
  1. <script type="text/javascript">  // 说明 :用 Javascript 实现锚点(Anchor)间平滑跳转 // 来源 :ThickBox 2.1 // 整理 :Yanfu Xie [xieyanfu@yahoo.com.cn] // 网址 :http://www.codebit.cn // 日期 :07.01.17  // 转换为数字 function intval(v) {     v = parseInt(v);     return isNaN(v) ? 0 : v; }  // 获取元素信息 function getPos(e) {     var l = 0;     var t  = 0;     var w = intval(e.style.width);     var h = intval(e.style.height);     var wb = e.offsetWidth;     var hb = e.offsetHeight;     while (e.offsetParent){         l += e.offsetLeft + (e.currentStyle?intval(e.currentStyle.borderLeftWidth):0);         t += e.offsetTop  + (e.currentStyle?intval(e.currentStyle.borderTopWidth):0);         e = e.offsetParent;     }     l += e.offsetLeft + (e.currentStyle?intval(e.currentStyle.borderLeftWidth):0);     t  += e.offsetTop  + (e.currentStyle?intval(e.currentStyle.borderTopWidth):0);     return {x:l, y:t, w:w, h:h, wb:wb, hb:hb}; }  // 获取滚动条信息 function getScroll()  {     var t, l, w, h;          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 }; }  // 锚点(Anchor)间平滑跳转 function scroller(el, duration) {     if(typeof el != 'object') { el = document.getElementById(el); }      if(!el) return;      var z = this;     z.el = el;     z.p = getPos(el);     z.s = getScroll();     z.clear = function(){window.clearInterval(z.timer);z.timer=null};     z.t=(new Date).getTime();      z.step = function(){         var t = (new Date).getTime();         var p = (t - z.t) / duration;         if (t >= duration + z.t) {             z.clear();             window.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 = window.setInterval(function(){z.step();},13); }  </script>    
  1.  
  2. <style type="text/css">
  3. div.test {
  4.     width:400px;
  5.     margin:5px auto;
  6.     border:1px solid #ccc;
  7. }
  8. div.test strong {
  9.     font-size:16px;
  10.     background:#fff;
  11.     border-bottom:1px solid #aaa;
  12.     margin:0;
  13.     display:block;
  14.     padding:5px 0;
  15.     text-decoration:underline;
  16.     color:#059B9A;
  17.     cursor:pointer;
  18. }
  19. div.test p {
  20.     height:400px;
  21.     background:#f1f1f1;
  22.     margin:0;
  23. }
  24.  
  25. </style>
  26.  
  27. <div class="test">
  28.     <a name="header_1" id="header_1"></a>
  29.     <strong onclick="javascript:scroller('header_4', 800);">header_1 --> header_4</strong>
  30.     <p></p>
  31. </div>
  32.  
  33. <div class="test">
  34.     <a name="header_2" id="header_2"></a>
  35.     <strong onclick="javascript:scroller('header_5', 800);">header_2 --> header_5</strong>
  36.     <p></p>
  37. </div>
  38.  
  39. <div class="test">
  40.     <a name="header_3" id="header_3"></a>
  41.     <strong onclick="javascript:scroller('header_6', 800);">header_3 --> header_6</strong>
  42.     <p></p>
  43. </div>
  44.  
  45. <div class="test">
  46.     <a name="header_4" id="header_4"></a>
  47.     <strong onclick="javascript:scroller('header_7', 800);">header_4 --> header_7</strong>
  48.     <p></p>
  49. </div>
  50.  
  51. <div class="test">
  52.     <a name="header_5" id="header_5"></a>
  53.     <strong onclick="javascript:scroller('header_3', 800);">header_5 --> header_3</strong>
  54.     <p></p>
  55. </div>
  56.  
  57. <div class="test">
  58.     <a name="header_6" id="header_6"></a>
  59.     <strong onclick="javascript:scroller('header_2', 800);">header_6 --> header_2</strong>
  60.     <p></p>
  61. </div>
  62.  
  63. <div class="test">
  64.     <a name="header_7" id="header_7"></a>
  65.     <strong onclick="javascript:scroller('header_1', 800);">header_7 --> header_1</strong>
  66.     <p></p>
  67. </div>
  68.  

 

调用方式:
Code:


scroller(el, duration)

el : 目标锚点 ID
duration : 持续时间,以毫秒为单位,越小越快
分享到:
评论

相关推荐

    js锚点定位

    2. **单页面应用**:在单页面应用中,使用JavaScript动态改变锚点可以帮助用户在不同的视图间进行平滑切换。 3. **响应式设计**:对于移动设备而言,通过JavaScript控制锚点可以让页面布局更加灵活,适应不同的屏幕...

    点击锚点链接时页面滚动的特效(Javascript Smooth Scroll)

    本篇文章将详细介绍如何利用JavaScript实现这一特效。 **一、基本原理** 平滑滚动的核心在于使用JavaScript监听锚点链接的点击事件,然后通过定时器控制浏览器逐步改变滚动位置,而不是立即跳转。这种方法可以模拟...

    强大的javascript特效

    JavaScript是一种广泛应用于网页和网络应用开发的脚本语言,它主要负责实现客户端的交互和动态效果。在网页设计中,JavaScript特效是提升用户体验、增加视觉吸引力的重要手段。本篇文章将深入探讨50个强大的...

    fullpag.js 最炫案例

    本篇文章将深入探讨fullpag.js的核心功能,解析其实现原理,并分享一系列炫酷的案例,帮助你更好地理解和运用这一工具。 1. fullpag.js简介 fullpag.js是由Alvaro Trigo开发的一款轻量级的jQuery插件,它的主要功能...

    jquery.fullPage实现搜狐快站页面效果.zip

    本篇文章将深入探讨如何利用jQuery.fullPage库来实现类似搜狐快站的页面效果。 1. **jQuery.fullPage简介** jQuery.fullPage是由Alvaro Trigo开发的一款插件,它通过简单的API和丰富的定制选项,帮助开发者创建...

    Vue引入jquery实现平滑滚动到指定位置

    在本篇文章中,我们将探讨如何在Vue项目中引入jQuery并使用其`animate`方法来实现平滑滚动。 首先,我们需要通过npm安装jQuery。由于国内网络环境可能会影响npm的下载速度,这里推荐使用淘宝npm镜像来加速下载: `...

    移动端滚动监听

    在本篇中,我们将深入探讨如何在移动端环境中,利用jQuery和原生JavaScript实现滚动监听。 首先,我们来看原生JavaScript的实现方式。在移动设备上,我们可以监听`touchmove`事件来捕捉用户滚动的行为。当用户在...

    几款超实用的jquery插件及用法演示

    jQuery是一款广泛应用于网页开发的JavaScript库,它极大地简化了JavaScript的DOM操作、事件处理、动画设计和Ajax交互。本篇文章将介绍几款超实用的jQuery插件及其用法,帮助你提升网页开发效率。 1. **jQuery ...

    漂亮的jquery选项卡

    在本篇文章中,我们将深入探讨如何使用 jQuery 实现美观且功能丰富的选项卡。 ### 一、jQuery 选项卡的基本结构 一个基本的选项卡组件通常由两部分组成:HTML 结构和 JavaScript 代码(这里主要使用 jQuery)。...

    jquery左侧导航滑动网页定位效果特效代码

    本篇文章将详细讲解如何利用jQuery实现一个功能强大的左侧导航,实现滑动网页定位效果。 一、jQuery基础 jQuery是一个轻量级的JavaScript库,它简化了JavaScript的DOM操作、事件处理、动画制作和Ajax交互。在本...

Global site tag (gtag.js) - Google Analytics