如何即时滚动到位置?

und*_*ned 6 javascript scroll smooth-scrolling

当启用平滑滚动时,如何使用 JavaScript 立即将窗口滚动到某个位置?

:root {
    scroll-behavior: smooth;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法忽略这个 CSS 规则?像这样的东西:

window.scrollBy({ top: 0, behavior: 'instantly' });
Run Code Online (Sandbox Code Playgroud)

Luc*_*mea 13

就这样:

window.scrollTo({
  top: 0,
  left: 0,
  behavior: 'instant',
});
Run Code Online (Sandbox Code Playgroud)


The*_*nce 5

scroll-behavior: auto; 不起作用。并且 scroll-behavior: instant; 不再存在

这是唯一对我有用的事情:

html {

  scroll-behavior: auto !important;

}
Run Code Online (Sandbox Code Playgroud)


Tur*_*nip 1

scroll-behavior也许您可以在调用之前设置.scrollBy(),然后在调用之后重置它。

var root = document.querySelector(':root');
var btnInstantScroll = document.querySelector('#btnInstantScroll');
var btnDefaultScroll = document.querySelector('#btnDefaultScroll');

btnInstantScroll.addEventListener('click', function() {

  // Change scroll behavior
  root.setAttribute("style", "scroll-behavior: auto;");

  // Timeout ensures styles are applied before scrolling
  setTimeout(function() {
    window.scrollBy(0, -2000);
    
    // Reset to CSS defaults.
    root.removeAttribute("style");
  }, 0)

})

btnDefaultScroll.addEventListener('click', function() {
  window.scrollBy(0, -2000);
})
Run Code Online (Sandbox Code Playgroud)
:root {
  scroll-behavior: smooth;
}

.scrollable {
  height: 2000px;
  background: repeating-linear-gradient(#e66465, #e66465 20px, #9198e5 20px, #9198e5 25px);
}

.controls {
  padding: 15px;
  position: fixed;
  bottom: 0;
}
Run Code Online (Sandbox Code Playgroud)
<div class="scrollable">

</div>

<div class="controls">
  <button type="button" id="btnInstantScroll">
    Instant scroll
  </button>

  <button type="button" id="btnDefaultScroll">
    Scroll using doc settings
  </button>
</div>
Run Code Online (Sandbox Code Playgroud)