组件内使用 fixed 定位子元素时,为什么无效?

组件内使用 fixed 定位子元素时,为什么无效?

组件内的子元素使用 fixed 是否有效?

在组件化的前端开发中,使用 fixed 定位子元素似乎不起作用。子元素依然会跟随父元素的滚动而移动。本文将探讨其原因并提供可能的解决方案。

问题:

以下代码中,子元素

使用了 fixed 定位,但实际效果却与预期不符。

<p>...</p>
<p>...</p>
<p>...</p>
<p>...</p>
<p>...</p>

答案:

固定定位的元素脱离了其父元素的文档流,其相对于可滚动区域(通常是 viewport)进行定位。但是,组件是一个隔离的沙盒环境,其内部的子元素相对定位于组件自身的可滚动区域(通常是组件主体的可滚动部分)。

虽然给

元素本身设置了 fixed 定位,但其父元素

的可滚动部分会遮挡

元素,导致其无法脱离父元素的惯性滚动。

解决方案:

要解决此问题,可以在

元素上使用 backdrop-filter 属性。backdrop-filter 会创建一层虚拟的背景,允许 underlying 元素脱离 fixed positioning 的影响。

以下代码展示了解决方案:

<div style="backdrop-filter: blur(10px);">
  <p>...</p>
  <p>...</p>
  <p>...</p>
  <p>...</p>
  <p>...</p>
</div>

以上就是组件内使用 fixed 定位子元素时,为什么无效?的详细内容,更多请关注其它相关文章!