Javascript onScroll在Chrome中滚动至行为平滑

Javascript onScroll在Chrome中滚动至行为平滑,javascript,scroll,Javascript,Scroll,有人能解释一下为什么window.scrollTo不能在Chrome中的window.onscroll事件中正常工作吗?fiddle中的示例是使用element.scrollIntoView,但行为是相同的。平滑的滚动非常慢 HTML JS Fiddle:您应该在滚动开始后删除侦听器,以避免多次执行: function onScroll(event) { window.removeEventListener("scroll", onScroll); var bottomel = doc

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

HTML

JS


Fiddle:

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

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);
*{
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);
}
 window.addEventListener("scroll", function(event) {

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

    if (newscroll > 0) {
        bottomel.scrollIntoView({
            block: "start",
            behavior: "smooth"
        });
    } 
});
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);