为什么 CSS 浮动不会改变后续 Div 的宽度?
在元素上使用 float:left 属性时,这是预期的后续元素会将其自身定位到浮动元素的右侧,而不是其下方。但是,在某些情况下,后续元素可能会继续跨越整个宽度。
出现这种情况是因为 CSS 中浮动元素的基本行为。当元素浮动时,它会从文档的正常流程中删除,并实际上变得像图像一样。浮动元素后面的内容在其周围流动,从而创建换行符。
但是,包含块的宽度(决定了后续元素可用的水平空间)不受浮动元素的影响。浮动元素的边距框(包括任何内容)保留在包含块中,因此后续元素仍必须与其右边缘对齐。
W3C 提供的示例说明了此行为:
[浮动元素与段落中的后续元素重叠的图像]
如图所示,浮动元素占据包含块中的空间,后续内容环绕它。缩短浮动右侧的行框以容纳它。
解决方案:建立新的块格式上下文
防止后续元素与浮动重叠元素,CSS提供了利用overflow属性的解决方案。将溢出属性设置为“visible”以外的其他属性(例如“hidden”或“scroll”)会为元素建立一个新的块格式化上下文。
在这个新的块格式化上下文中,浮动元素的边距框受到限制,禁止它与同一上下文中的任何其他浮动重叠。因此,后续元素现在可以将自身对齐到浮动元素的右侧:
[溢出示例:应用隐藏]
.yellow {
overflow: hidden;
}
在处理围绕浮动元素流动的内容足够长以在浮动后正常继续的元素时,此行为变得特别相关。默认情况下限制重叠将阻止内容在浮动元素下方继续。
以上是为什么浮动元素不影响后续div的宽度?的详细内容。更多信息请关注PHP中文网其他相关文章!