首页 > 语言 > JavaScript > 正文

JQuery简单实现锚点链接的平滑滚动

2024-05-06 16:19:08
字体:
来源:转载
供稿:网友

在平时的项目中,我们经常需要一些特效链接,如果使效果进一步加强,我们可以使点击锚点链接平滑滚动到锚点,下面就来给大家讲解下如何使用jQuery来实现。

一般使用锚点来跳转到页面指定位置的时候,会生硬地立即跳转到指定位置,但是有些时候我们想要平滑地过渡到指定的位置,那么可以使用JQuery简单的实现这个效果:

比如,这里我们将通过点击标签跳转到 id为content的指定位置那里。

 

 
  1. <a id="turnToContent" href="#content"></a> 

然后呢,就在我们想要的位置设置id为content的内容块,这里用一个div模拟一篇不像文章的文章。最好将此div放在靠后的位置,这样效果就很明显一点,如果只是测试一下这个效果,可以用简单粗暴的方法,在其前面放很多个

标签即可。

 

 
  1. <div id="content"
  2. <h2> 
  3. <a href="###">HTML5</a> 
  4. </h2> 
  5. <p> 
  6. html5html5html5 
  7. </p> 
  8. <p class="addMes">标签:<span>HTML5</span><small>2015年4月19日</small></p> 
  9. </div> 

最后就是用JQuery来实现平滑过渡的效果了:

 

 
  1. $('#turnToContent').click(function () { 
  2. $('html, body').animate({ 
  3. scrollTop: $($.attr(this'href')).offset().top 
  4. }, 500); 
  5. return false
  6. }); 

搞定了!

下面我们来继续改进一下,

 

 
  1. $(function(){  
  2. $('a[href*=#],area[href*=#]').click(function() { 
  3. if (location.pathname.replace(/^///, '') == this.pathname.replace(/^///, '') && location.hostname == this.hostname) { 
  4. var $target = $(this.hash); 
  5. $target = $target.length && $target || $('[name=' + this.hash.slice(1) + ']'); 
  6. if ($target.length) { 
  7. var targetOffset = $target.offset().top; 
  8. $('html,body').animate({ 
  9. scrollTop: targetOffset 
  10. }, 
  11. 1000); 
  12. return false
  13. }); 
  14. }) 

改进后的代码的好处是点击锚点链接平滑滚动到锚点,并且浏览器URL后缀不带有锚点字样,使用的过程中基本不用修改以上代码即可实现。

以上所述就是本文的全部内容了,希望大家能够喜欢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选