甚至在页面的每个部分都具有锚链接速度

时间:2018-11-27 11:49:21

标签: javascript html

我创建/使用此代码进行锚滚动:

$('#Anchors').click(function(e){
  e.preventDefault();
  var target = this.hash;
  var $target = $(target);
  var scrollTo = $target.offset().top - 80
  $('body, html').animate({scrollTop: scrollTo+'px'}, 1200);
});

我需要帮助,因为如果我在页面顶部并按链接在页面上向下滚动,那太快了。但是,如果我在半页上并按锚,那么速度就可以了。那么如何使页面的每个部分的滚动速度相同?

2 个答案:

答案 0 :(得分:0)

这种简单的CSS平滑滚动可能很有用。

html {
  scroll-behavior: smooth;
}

答案 1 :(得分:0)

这是自然现象,因为持续时间(1200ms)是固定的,并且对于更长的距离它必须更快。 但是,如果您想通过javascript解决此问题,可以将时长设为动态:

  $('#Anchors').click(function(e){
    e.preventDefault();
    var target = this.hash;
    var $target = $(target);
    var scrollTo = $target.offset().top;

    var distance = Math.abs($(window).scrollTop() - scrollTo)
    var duration = distance/750; // 750px in 1s, you can change it
    $('body, html').animate({scrollTop: scrollTo+'px'}, duration * 1000, 'linear');
  });

这保证了速度几乎是固定的(或者肯定是,如果缓和是“线性的”)。