如何让position fixed不再基于浏览器窗口定位

 position:fixed默认是相对浏览器定位的。

就是将某个元素固定在浏览器的某个确定的位置,不随滚动条的移动而变化;

 

MDN对position: fixed有一个注释:

 

当元素祖先的 transform 属性非 none 时,容器由视口改为该祖先。

 

也就是说如果想让fixed不相对浏览器定位,只要给它的随便哪个祖先设上非none的transform,问题就解决了。这祖先可以是static的,也就是说随便哪个祖先都行。比如说给body设一个transform: translateZ(0);,测试有效。

 

不过想让 position:fixed 的元素相对于父元素定位,应该改成 absolute 以及父元素 relative。而不是让 fixed 干不应该干的事。相对父元素定位需要position fixed吗?难道这是想搞事情啊!脱离党指导路线的都不是什么好路子!

 

而且transform会对定位产生副作用,建议尽量避免一起使用。

原文地址:https://www.cnblogs.com/ranyonsue/p/11889057.html