javascript - Chrome 中的 onScroll 滚动To 行为平滑

标签 javascript scroll

有人可以解释一下为什么 window.scrollTo 在 Chrome 中的 window.onscroll 事件中无法正常工作吗? fiddle 中的示例使用 element.scrollIntoView 但行为是相同的。平滑滚动非常非常慢。

HTML

<div id="top"></div>
<div id="bottom">

CSS

*{
margin:0;
padding:0
} 

body {
background-image: radial-gradient(#166664 0%, #252233 80%);
}

#top {
height: 100vh;
background-color: rgba(255,255,255,0.3);
}

#bottom {
height: 1800px;
background-color: rgba(0,0,0,0.3);
}

JS

 window.addEventListener("scroll", function(event) {

    var bottomel = document.getElementById("bottom");
    var newscroll = window.pageYOffset;

    if (newscroll > 0) {
        bottomel.scrollIntoView({
            block: "start",
            behavior: "smooth"
        });
    } 
});

fiddle :https://jsfiddle.net/3doc8ap5/2/

最佳答案

您应该在滚动开始后删除监听器以避免多次执行:

function onScroll(event) {
  window.removeEventListener("scroll", onScroll);

  var bottomel = document.getElementById("bottom");
  var newscroll = window.pageYOffset;

  if (newscroll > 0) {
    bottomel.scrollIntoView({
      block: "start",
      behavior: "smooth"
    });
  }

  event.preventDefault();
};

window.addEventListener("scroll", onScroll);

关于javascript - Chrome 中的 onScroll 滚动To 行为平滑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60097888/

相关文章:

Javascript 模运算给出错误的结果

带有 "this"的 JavaScript 类和事件处理程序

javascript - AngularJS UI-Router 的工作方式与 ng-router 的工作方式不同

wpf - 检测FlowDocument更改并滚动

jquery - IE8/9 中溢出滚动列表的相对顶部位置

javascript - 按住单击时更改图像

jquery - 为什么向左滚动不适用于负值?

css - 阻止 anchor 垂直跳跃

android - jquery scrollLeft 不适用于 Android

javascript - 导出组件时文档不显示任何内容