熟悉css的同学都知道,fixed是一种固定定位,通常可以使内容固定在浏览器窗口的某个位置,位置不会随页面滚动而发生变化,他默认的父级定位元素是屏幕视口(viewport)。
不过他是可以改变父级定位元素的,mdn上是这么描述的。
元素会被移出正常文档流,并不为元素预留空间,而是通过指定元素相对于屏幕视口(viewport)的位置来指定元素位置。元素的位置在屏幕滚动时不会改变。打印时,元素会出现在的每页的固定位置。fixed 属性会创建新的层叠上下文。当元素祖先的 transform、perspective、filter 或 backdrop-filter 属性非 none 时,容器由视口改为该祖先。
也就是说,如果某个祖先元素设置了这几个属性,那么子fixed元素将会基于这个祖先元素固定位置。在实际使用的时候如果碰到元素并没有基于视口定位的话,那么就需要排查一下祖先元素有没有设置这几个属性。