美文网首页
JQuery简单实现锚点链接的平滑滚动

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

作者: zZ_d205 | 来源:发表于2021-04-29 10:29 被阅读0次

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

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

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

<a id="turnToContent" href="#content">1111111111</a>

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

[ 复制代码

](javascript:void(0); "复制代码")

<div style="width: 100%;height: 2000px"></div>
<div id="content">
  <h2>
    <a href="###">HTML5</a>
  </h2>
  <p>html5html5html5</p>
  <p class="addMes">标签: <span>HTML5</span><small>2015年4月19日</small></p>
</div>
[ 复制代码

](javascript:void(0); "复制代码")

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

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

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

$(function(){
$('a[href*=#],area[href*=#]').click(function() {
  if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname){
    var $target = $(this.hash);
    $target = $target.length && $target || $('[name=' + this.hash.slice(1) + ']');
    if ($target.length) {
      var targetOffset = $target.offset().top;
      $('html,body').animate({scrollTop: targetOffset},500);
      return false;
    }
  }
});
})

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

相关文章

网友评论

      本文标题:JQuery简单实现锚点链接的平滑滚动

      本文链接:https://www.haomeiwen.com/subject/tlwirltx.html