javascript - 将位置从固定更改为相对或相反会导致布局偏移 (CLS)
问题描述
我正在使用以下代码使侧边栏上的一些小部件对特定滚动具有粘性,并且效果很好
<script>
window.onscroll = function () {
myFunction();
};
function between(x, min, max) {
return x > min && x <= max;
}
function myFunction() {
var w = actualWidth = window.innerWidth ||
document.documentElement.clientWidth ||
document.body.clientWidth ||
document.body.offsetWidth;
var hest = document.documentElement.scrollTop;
var element = document.getElementById("mySidebar");
element.style.width = element.offsetWidth + 'px';
if ((w <= 992) || (hest <= 875)) {
element.style.position = "";
element.style.top = "";
return;
}
if (between(hest, 875, 2875)) {
element.style.position = "fixed";
element.style.top = "10px";
}
if (between(hest, 2875, 3855)) {
element.style.position = "relative";
element.style.top = "2015px";
}
if
(between(hest, 3855, 4855)) {
element.style.position = "fixed";
element.style.top = "-980px";
}
if
(between(hest, 4855, 6170)) {
element.style.position = "relative";
element.style.top = "3000px";
}
if
(between(hest, 6170, 6945)) {
element.style.position = "fixed";
element.style.top = "-2310px";
}
if
(between(hest, 6945, 8190)) {
element.style.position = "relative";
element.style.top = "3785px";
}
if
(between(hest, 8190, 9545)) {
element.style.position = "fixed";
element.style.top = "-3510px";
}
if
(between(hest, 9545, 10860)) {
element.style.position = "relative";
element.style.top = "5175px";
}
if (hest > 10860) {
element.style.position = "fixed";
element.style.top = "-4814px";
}
};
</script>
问题是在滚动时,它会导致布局偏移。特别是当位置从固定变为相对或相对于固定时。
我使用粘性而不是固定,但我仍然得到了相同的布局转变。
如何修复此 CLS?
问候,
解决方案
推荐阅读
- arrays - 在 C 中使用 UDP 从客户端传输布尔数组
- css - 在 React 中包含 SVG 资源作为组件
- python - 如何用 AVL 树实现字典?
- python - Alexa Skills Kit 'Context' 对象没有属性 'System'
- sql - 如何在同一设置中使用 sum、replace 和 case?
- spring - @ApiOperation 中指定的标签不会覆盖@Api swagger ui 中指定的标签
- node.js - 如何在 Node Project 中从 Angular 项目中渲染索引
- c# - WindowsCryptographicException:在 Azure 中发布应用程序时拒绝访问
- system-verilog - 用于标记不正确的 verilog 事件区域的 SV 断言
- python - SWIG 构建模块的 VSCode 自动完成功能