当添加一个位置时:在导航栏上的滚动上固定时,DOM抛出错误:[违规]在执行JavaScript时强制回流需要ms,在每个滚动事件上。根据我的理解(和谷歌搜索(,这意味着每次由于新的计算而发生滚动事件时,都会出现布局抖动。
我的问题是;这是个问题吗?我真的无法破解如何改进以消除违规的代码,因此我想知道在使用滚动偏移时这是否是"标准"行为。
我使用的代码如下:
document.addEventListener('DOMContentLoaded', function() {
window.addEventListener('scroll', addPositionFixed);
var navbar = document.getElementById("navbar");
var sticky = navbar.offsetTop;
function addPositionFixed() {
if (window.pageYOffset >= sticky) {
navbar.classList.add("sticky");
} else {
navbar.classList.remove("sticky");
}
}
})
我找到了一个似乎有效且没有错误的答案:
window.onscroll = function() {myFunction()};
var header = document.getElementById("navbar");
var sticky = header.offsetTop;
function myFunction() {
if (window.pageYOffset > sticky) {
header.classList.add("sticky");
} else {
header.classList.remove("sticky");
}
}
至少不会再出现任何错误!