定位元素需设置z-index才能避免被浮动元素覆盖。正确使用position和z-index可控制层叠顺序,确保弹层等定位元素显示在浮动内容之上,同时注意父级层叠上下文影响,必要时用flex或grid替代float布局。
当CSS浮动元素覆盖了定位元素时,问题通常出在层叠顺序(stacking context)的控制上。虽然浮动(float)本身不直接创建独立的层叠上下文,但结合定位(position)和 z-index 的使用不当,容易导致预期之外的覆盖现象。
浏览器根据一定的层叠规则决定元素的显示顺序。关键点包括:

要让定位元素不被浮动元素覆盖,必须保证它是定位元素且设置了合适的 z-index 值。
z-index: 10;
某些情况下,浮动元素可能因为父容器的 stacking context 而显得“层级更高”。解决方法:
常见于下拉菜单、提示框等场景:
.popover {
position: absolute;
z-index: 1000;
background: white;
border: 1px solid #ccc;
}
.sidebar {
float: left;
width: 200px;
}
只要 .popover 是定位元素且 z-index 足够高,就能正确显示在 .sidebar 之上。
基本上就这些。关键是理解 定位 + z-index 才能真正控制层叠,浮动本身不影响层级优先级。合理设置即可避免覆盖问题。