3 回答

TA貢獻1856條經驗 獲得超5個贊
也許你可以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);
})
: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;
}
<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>

TA貢獻1934條經驗 獲得超2個贊
scroll-behavior: auto; 不工作。并且 scroll-behavior: instant; 不再存在
這是唯一對我有用的東西:
html {
scroll-behavior: auto !important;
}
添加回答
舉報