position:fixed默認是相對瀏覽器定位的。
就是將某個元素固定在瀏覽器的某個確定的位置,不隨滾動條的移動而變化;
MDN對position: fixed有一個注釋:
當元素祖先的 transform 屬性非 none 時,容器由視口改為該祖先。
也就是說如果想讓fixed不相對瀏覽器定位,只要給它的隨便哪個祖先設上非none的transform,問題就解決了。這祖先可以是static的,也就是說隨便哪個祖先都行。比如說給body設一個transform: translateZ(0);,測試有效。
不過想讓 position:fixed 的元素相對於父元素定位,應該改成 absolute 以及父元素 relative。而不是讓 fixed 干不應該干的事。相對父元素定位需要position fixed嗎?難道這是想搞事情啊!脫離黨指導路線的都不是什么好路子!
而且transform會對定位產生副作用,建議盡量避免一起使用。