fixed定位的本质是元素完全脱离文档流且始终相对于视口定位;它不占空间、不随滚动移动,但受父级transform影响可能降级为relative行为。
fixed 是 position 属性的一个取值,它让元素**完全脱离文档流**,并**始终相对于浏览器视口(viewport)定位**。这意味着:元素不占空间、不随页面滚动移动、也不受父元素样式(比如 transform)影响——除非父级用了 transform,此时 fixed 会“降级”为
relative 行为,这点要特别注意。
只需两步:设 position: fixed,再指定至少一个方向偏移(top / right / bottom / left)。常见组合有:
top: 0; left: 0; width: 100%;
bottom: 20px; right: 20px;
top: 0; left: 0; height: 100vh; width: 240px;
top: 0; left: 0; width: 100vw; height: 100vh;
fixed 元素不占空间,后续内容会“上移”填补空缺,结果就是被遮挡。解决方法是给主体内容预留对应空间:
margin-top: 60px
margin-left: 240px
z-index: 1000,侧边栏用 z-index: 990,主内容同时设置 margin-top 和 margin-left
在 iOS Safari 中,输入框聚焦时 fixed 元素可能抖动或错位;部分安卓 WebView 对 fixed 支持不稳定。实用对策包括:
-webkit-overflow-scrolling: touch;
transform、perspective 或 filter
vh 单位时配合 JS 动态调整