背景不显示是因为浮动子元素导致父容器高度塌陷为0,使背景仅作用于不可见区域;解决方法是让父容器正确包裹浮动元素,推荐使用display: flow-root或overflow: hidden。
浮动元素会导致父容器高度塌陷,背景图片自然无法正常显示——因为父容器实际高度可能为0。解决方法不是“先清除浮动再设置背景”,而是让父容器正确包裹浮动子元
素,背景才能按预期渲染。
当子元素全部浮动后,父容器失去高度参考,表现为“高度为0”。此时即使设置了 background-image,也只作用于一个看不见的窄条区域(比如只有padding撑开的一点空间),视觉上就像背景消失了。
不用额外空标签或伪元素 hack,现代写法直接给父容器添加:
确保背景能正常显示,还需确认以下几点:
原问题代码:
.wrap { background: url(bg.jpg); }
.item { float: left; width: 200px; }修复后:
.wrap {
background: url(bg.jpg);
display: flow-root; /* 或 overflow: hidden; */
}
.item { float: left; width: 200px; }