CSS左侧浮动元素无法向上移动的技术问题咨询
关于最后一个蓝色浮动section的布局解析
嘿,我来帮你搞懂最后那个蓝色小方块的布局逻辑~先把你的代码整理成完整可运行的结构,方便我们分析:
<!DOCTYPE html> <html> <head> <style> section { display: inline-block; float: left; width: 300px; height: 100px; border: solid; margin: 3px; } </style> </head> <body> <section style="margin-left: 150px;"> </section> <section style="height: 300px;"></section> <section></section> <section> </section> <section style="height: 300px; width: 3px; background-color: blue;"></section> </body> </html>
首先,所有section都设置了float: left,这意味着它们会脱离正常文档流,尽可能向左排列,直到碰到容器边缘、其他浮动元素,或者当前行剩余空间不足以容纳它们时,就会向下换行。
我们逐个拆解元素的位置,重点看最后那个蓝色块:
第一个section:带
margin-left:150px,它会从左侧150px的位置开始摆放,占据300px宽度、100px高度。第二个section:高度300px(比第一个高200px),它会紧跟在第一个section的右侧(水平空间足够的前提下),顶部和第一个对齐,垂直方向会延伸到第一个section下方200px的位置。
第三个、第四个section:如果容器宽度足够,它们会依次排在第二section的右侧;如果宽度不够,就会换行到第二行,紧贴容器左侧。
最后那个蓝色section:它的宽度只有3px,高度300px,同样遵循float规则:
它会优先向左移动,寻找水平方向未被占据的空间。如果第一行还有剩余空间,它会挤在前面元素的右侧,和第二section的高度对齐;如果第一行空间不足,它会换行到第二行,紧跟在第四section的右侧(毕竟3px宽度几乎不会占满空间)。这里的关键是:浮动元素不会穿透上方浮动元素的垂直范围,但只要水平方向有间隙,就会尽可能填充进去。你可以试着缩小浏览器窗口,或者调整前面元素的高度,就能直观看到它的位置变化。
内容的提问来源于stack exchange,提问作者Giorgi Tsertsvadze
相关产品推荐
相关产品推荐

