平滑滚动锚点jquery

时间:2016-10-19 10:10:43

标签: jquery html css

我想创建带有锚点网址的导航'和平滑滚动。 但是在那个页面上我使用了一个高度为88px的粘性标题。

如何根据课程product-anchor-links-action创建平滑滚动?

JSFiddle:https://jsfiddle.net/rx0txmek/2/

我目前的HTML:

<div class="product-page-nav">
    <div class="container">
    <ol class="product-anchor-links-list">
        <li class="product-anchor-links-item"><a href="#productbeschrijving" class="product-anchor-links-action">Nav 1</a></li>
        <li class="product-anchor-links-item"><a href="#specificaties" class="product-anchor-links-action">Nav 2</a></li>
        <li class="product-anchor-links-item"><a href="#reviews" class="product-anchor-links-action">Nav 3</a></li>
    </ol>
    </div>
</div>

jQuery的:

    $(function() {
  $('a[href*="#"]:not([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) {
        $('html, body').animate({
          scrollTop: target.offset().top
        }, 1000);
        return false;
      }
    }
  });
});

1 个答案:

答案 0 :(得分:1)

只需从scrollTop值中减去粘性标题的高度即可。当没有粘性时,该值将为0(如果粘性始终存在,则可以使用.height()值。)

$('a').click(function(){

    var stickyHeight = $('.sticky').length ? $('.sticky').height() : 0

    $('html, body').animate({
        scrollTop: $( $(this).attr('href') ).offset().top - stickyHeight 
    }, 500);
    return false;
});  

如果没有$('。stickyHeader')