position:fixed默认是相对浏览器定位的。
就是将某个元素固定在浏览器的某个确定的位置,不随滚动条的移动而变化;
MDN对position: fixed有一个注释:
当元素祖先的 transform 属性非 none 时,容器由视口改为该祖先。
也就是说如果想让fixed不相对浏览器定位,只要给它的随便哪个祖先设上非none的transform,问题就解决了。这祖先可以是static的,也就是说随便哪个祖先都行。比如说给body设一个transform: translateZ(0);,测试有效。
不过想让 position:fixed 的元素相对于父元素定位,应该改成 absolute 以及父元素 relative。而不是让 fixed 干不应该干的事。相对父元素定位需要position fixed吗?难道这是想搞事情啊!脱离党指导路线的都不是什么好路子!
而且transform会对定位产生副作用,建议尽量避免一起使用。