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)
scroll-behavior: auto; 不起作用。并且 scroll-behavior: instant; 不再存在
这是唯一对我有用的事情:
html {
scroll-behavior: auto !important;
}Run Code Online (Sandbox Code Playgroud)
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)