javascript - 锚定链接速度甚至在页面的每个部分

标签 javascript html

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

$('#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);
});

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

最佳答案

这是一种自然行为,因为持续时间(1200 毫秒)是固定的,并且距离较长时必须更快。 但如果你想通过 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');
  });

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

关于javascript - 锚定链接速度甚至在页面的每个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53499009/

相关文章:

javascript - HTML 按钮刷新页面而不是将数据发送到数据库

javascript - 在页面加载前完成加载条

javascript - 检查对象属性值是否为 false

javascript - 如何通过 Javascript 更改 HTML header ?

JavaScript - 为什么我们必须从自调用函数返回一个函数?

php - 多种形式和一个 PHP 接收器

javascript - 分配 javascript 对象属性时出现问题

javascript - 无法在 socket.io 中广播用户断开连接

jquery - GWT 适合我吗?

javascript - 对于相同的事件但不同的对象 jquery 有相同的功能