CSS深入理解之float(HTML/CSS)
float的设计初衷仅仅是:为了文字环绕效果
float的包裹与破坏
包裹:收缩、坚挺、隔绝(BFC)
破坏:父元素高度塌陷

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Layout</title> <style> .box{ border: 1px solid red; width: 300px; margin: 20px auto; } .left{ float: left; height: 100px; width: 50px; border: 1px solid black; } .right{ float: right; height: 100px; width: 50px; border: 1px solid green; } </style> </head> <body> <div class="box"> <div class="left"></div> <div class="right"></div> </div> </body> </html>
如何降低float破坏性的影响(清除浮动)?
1、底部插入clear:both;

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Layout</title> <style> .box { border: 1px solid red; width: 300px; margin: 20px auto; } .clearfix { clear: both; } .left { float: left; height: 100px; width: 50px; border: 1px solid black; } .right { float: right; height: 100px; width: 50px; border: 1px solid green; } </style> </head> <body> <div class="box"> <div class="left"></div> <div class="right"></div> <div class="clearfix"></div> </div> </body> </html>

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Layout</title> <style> .box { border: 1px solid red; width: 300px; margin: 20px auto; } .box:after { content: ''; display: block; height: 0; overflow: hidden; clear: both; } .left { float: left; height: 100px; width: 50px; border: 1px solid black; } .right { float: right; height: 100px; width: 50px; border: 1px solid green; } </style> </head> <body> <div class="box"> <div class="left"></div> <div class="right"></div> </div> </body> </html>

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Layout</title> <style> .box { border: 1px solid red; width: 300px; margin: 20px auto; } .box:after { content: ''; display: table; clear: both; } .left { float: left; height: 100px; width: 50px; border: 1px solid black; } .right { float: right; height: 100px; width: 50px; border: 1px solid green; } </style> </head> <body> <div class="box"> <div class="left"></div> <div class="right"></div> </div> </body> </html>
2、父元素BFC/haslayout

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Layout</title> <style> .box { border: 1px solid red; width: 300px; margin: 20px auto; overflow: hidden; } .left { float: left; height: 100px; width: 50px; border: 1px solid black; } .right { float: right; height: 100px; width: 50px; border: 1px solid green; } </style> </head> <body> <div class="box"> <div class="left"></div> <div class="right"></div> </div> </body> </html>
float的特性
1、元素block块状化(砖头化);
2、破坏性造成的紧密排列特性(去空格化)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?