html - 当元素从相对位置定位到固定位置但腾出的空间保持固定高度时,是否会发生页面重排
问题描述
我正在研究一个元素,一旦你滚动过去,它就会在页面顶部变得粘滞。为了防止其下方的内容向上移动,我正在获取即将被粘住的元素的父级的当前高度,并将其添加为内联样式,纯粹是为了用户体验,这样用户就不会因为跳跃的东西而迷失方向。
我想知道这是否增加了性能的好处?改变元素位置的事实是否会导致页面重排,或者我是否通过在使子元素具有粘性之前对元素父元素应用固定高度来防止页面重排?
解决方案
改变元素位置的事实是否会导致页面重排
是的,请参阅什么是 DOM 回流?. 即使您作为用户可能看不到任何差异,网站也会重新粉刷。
我想知道这是否增加了性能的好处?
重绘/重排通常很快,特别是如果您只更改布局的一小部分。但是对性能影响更大的是您跟踪滚动的方式。从历史上看,这主要是通过使用addEventListener('scroll', /* ... */)
. IntersectionObserver
但是,使用API做同样的事情有更好、更高效的方法。它有合理的浏览器支持并且有一个polyfill。
推荐阅读
- selenium-webdriver - 创建 def 检查 URL 是否有效,如果未找到,则转到其他 URL 以编辑该字段,但检查当前 URL,然后提取正确的信息
- flutter - 有没有办法在 Flutter 中重新绘制屏幕或导航到 AppLifecycleState.paused 上的不同屏幕
- python - 从图像中选择区域但可调整大小的 QRubberBand 不会调整大小
- regex - 无法使用正则表达式为特定标签运行 Gitlab CI
- sql - 将两列上的三个表连接起来,其中不匹配的空白处有空格
- accessibility - 如何防止 JAWS 屏幕阅读器在 div 复选框上说“只读”?
- android - 按钮单击为自身和另一个按钮触发 onclick
- python - 具有共享对象引用的两个变量的总大小是多少?
- angularjs - 如何查找和替换页面上的特定文本
- css - 我在 img 旁边填充文本有问题