Open SyMind opened 2 years ago
当给一个元素使用 transform、will-change 等属性开启 CSS 硬件加速时,会导致 fixed 定位元素不再相对于视口(viewport)进行定位。
fixed 定位的元素相对于 fixed 定位包含块(fixed positioning containing block,通常是视口)进行定位和调整大小。
元素的包含块(containing block)由距离最近的创建了 fixed 定位包含块的祖先元素建立:
如果没有祖先元素创建,那么 fixed 定位包含块为视口,因此,在滚动文档时,fixed 定位的元素不会移动。
可以使元素创建 fixed 定位包含块的属性有 transform、will-change、contain 等。
问题
当给一个元素使用 transform、will-change 等属性开启 CSS 硬件加速时,会导致 fixed 定位元素不再相对于视口(viewport)进行定位。
原因
fixed 定位的元素相对于 fixed 定位包含块(fixed positioning containing block,通常是视口)进行定位和调整大小。
元素的包含块(containing block)由距离最近的创建了 fixed 定位包含块的祖先元素建立:
如果没有祖先元素创建,那么 fixed 定位包含块为视口,因此,在滚动文档时,fixed 定位的元素不会移动。
可以使元素创建 fixed 定位包含块的属性有 transform、will-change、contain 等。
参考