以前只知道transform会导致fixed失效,但最近一个项目中发现filter也会有同样的问题,然后查了一下相关资料,解释如下:
当在 body 中使用了 filter 滤镜属性的时候,会导致 fixed 元素定位发生错误,即不再相对 viewport 进行定位,而是相对 body 元素进行定位。
其实能导致fixed失效的css属性还不少,下面我列了一些已知会导致fixed失效的css属性:
filter
transform
backdrop-filter
perspective
contain
transform-style
content-visibility
will-change
这里有关于filter导致fixed失效的GitHub讨论,感兴趣的朋友深入了解一下。