前端进阶 课程二十五、:CSS核心进阶四 CSS浮动(float)与清除浮动(兼容旧项目)
本节课针对旧项目兼容必备的float布局展开学习理解float的原理、特性及左/右浮动的用法实操实现三栏布局与图文环绕效果。明晰浮动带来的父容器塌陷、元素覆盖等副作用重点掌握额外标签法、overflow法、伪元素法、父元素浮动法四种清除浮动的方法对比各方法的优缺点与适用场景。同时了解float布局的优劣及现代替代方案搭配导航栏、图文环绕等作业让学员能应对旧项目中的浮动布局问题熟练清除浮动。一、学习目标1. 理解float的作用和原理掌握float的用法左浮动、右浮动2. 掌握清除浮动的4种常用方法理解每种方法的适用场景3. 了解float布局的优缺点能应对旧项目中的浮动布局问题。二、核心知识点含实操float原理与用法定义float用于让元素脱离正常文档流向左或向右浮动直到碰到包含块的边缘或其他浮动元素。float的取值left左浮动、right右浮动、none默认值不浮动。float的特性元素脱离正常文档流但不脱离文本流文本会围绕浮动元素排列浮动元素会收缩包裹宽度由内容决定除非手动设置width多个浮动元素会并排排列如果空间足够空间不足时会自动换行内联元素浮动后会自动变为块级元素可设置width、height。示例这个示例会实现左侧固定宽度、右侧固定宽度、中间自适应的三栏布局并展示文本环绕效果。HTML!DOCTYPE htmlhtml langzh-CNheadmeta charsetUTF-8titlefloat 基础用法TAB4空格 Grid 对比/titlestyle* {margin: 0;padding: 0;box-sizing: border-box;}body {padding: 20px;line-height: 1.6;}.demo {margin-bottom: 40px;border: 1px solid #eee;padding: 20px;}h3 {margin-bottom: 15px;color: #333;}/* -------------------- float 三栏布局 -------------------- */.float-container {border: 2px solid #ff9800;padding: 10px;/* 临时清除浮动避免塌陷影响查看效果 */overflow: hidden;}.float-left {float: left;width: 200px;height: 300px;background-color: #f0f8ff;padding: 10px;}.float-right {float: right;width: 200px;height: 300px;background-color: #fdf2e9;padding: 10px;}.float-middle {margin: 0 210px;height: 300px;background-color: #e8f4f8;padding: 10px;}/* 文本环绕示例 */.text-wrap {margin-top: 20px;border: 2px solid #ddd;padding: 10px;}.float-box {float: left;width: 100px;height: 100px;background-color: #ffecd1;margin-right: 10px;}/* -------------------- Grid 实现同等三栏布局 -------------------- */.grid-container {display: grid;/* 左200px 自适应 右200px列间距10px */grid-template-columns: 200px 1fr 200px;gap: 10px;border: 2px solid #4caf50;padding: 10px;}.grid-left, .grid-right, .grid-middle {height: 300px;padding: 10px;}.grid-left {background-color: #f0f8ff;}.grid-middle {background-color: #e8f4f8;}.grid-right {background-color: #fdf2e9;}/style/headbodydiv classdemoh3float 三栏布局左/右固定200px中间自适应/h3div classfloat-containerdiv classfloat-left左侧栏float: left/divdiv classfloat-right右侧栏float: right/divdiv classfloat-middle中间栏margin 自适应/div/divh3 stylemargin-top: 20px;float 文本环绕效果/h3div classtext-wrapdiv classfloat-box浮动块/divp这是围绕浮动元素的文本float 元素脱离文档流但不脱离文本流所以文本会绕开浮动块排列。即使浮动块不在正常布局流中文字依然能识别其位置这是 float 最核心的特性之一。/pp继续添加文本验证Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua./p/div/divdiv classdemoh3Grid 栅格实现同等三栏布局更简洁/h3div classgrid-containerdiv classgrid-left左侧栏Grid 200px/divdiv classgrid-middle中间栏Grid 1fr 自适应/divdiv classgrid-right右侧栏Grid 200px/div/div/div/body/html说明图示左/右侧栏分别用float: left/right脱离文档流设置固定宽度中间栏通过margin: 0 210px避开左右浮动栏实现自适应文本环绕示例中浮动块脱离文档流但文本会自动绕开它排列体现“不脱离文本流”的特性。实操练习用float实现一个三栏布局左侧固定宽度、右侧固定宽度、中间自适应观察浮动元素的排列和文本环绕效果。2. 浮动的副作用必须掌握父元素塌陷浮动元素脱离文档流父元素无法感知浮动元素的高度导致父元素高度为0相邻元素错乱非浮动元素会被浮动元素覆盖除文本外浮动元素换行异常多个浮动元素宽度总和超过包含块宽度时会出现换行混乱。示例这个示例会展示父元素高度塌陷和非浮动元素被覆盖的问题。HTML!DOCTYPE htmlhtml langzh-CNheadmeta charsetUTF-8title浮动的副作用TAB4空格/titlestyle* {margin: 0;padding: 0;box-sizing: border-box;}body {padding: 20px;line-height: 1.6;}.demo {margin-bottom: 40px;border: 1px solid #eee;padding: 20px;}h3 {margin-bottom: 15px;color: #333;}.desc {color: #666;margin-bottom: 10px;}/* -------------------- 副作用1父元素塌陷 -------------------- */.parent-collapse {border: 3px solid #ff4444;padding: 10px;}.float-item {float: left;width: 150px;height: 150px;background-color: #ffd700;margin-right: 10px;}/* -------------------- 副作用2相邻元素错乱 -------------------- */.sibling-item {width: 100%;height: 100px;background-color: #90ee90;border: 2px solid #32cd32;margin-top: 10px;}/* -------------------- 副作用3浮动换行异常 -------------------- */.float-wrap-error {width: 400px;border: 2px solid #666;padding: 10px;margin-top: 10px;}.small-float {float: left;width: 150px;height: 150px;background-color: #b3e5fc;margin: 5px;}/* -------------------- Grid 无副作用对比 -------------------- */.grid-safe {display: grid;grid-template-columns: repeat(3, 150px);gap: 10px;border: 2px solid #4caf50;padding: 10px;width: 400px;margin-top: 10px;}.grid-item {height: 150px;background-color: #b3e5fc;}/style/headbodydiv classdemoh3副作用1父元素塌陷/h3p classdesc父元素边框本应包裹子元素但因子元素浮动父元素高度为0仅能看到红色边框线/pdiv classparent-collapsediv classfloat-item浮动子元素1/divdiv classfloat-item浮动子元素2/div/div/divdiv classdemoh3副作用2相邻元素错乱/h3p classdesc非浮动的绿色元素被浮动元素覆盖仅文字绕开元素本身被压在下面/pdiv classfloat-item浮动元素/divdiv classsibling-item我是相邻的非浮动元素我的区域被浮动元素覆盖了/div/divdiv classdemoh3副作用3浮动换行异常/h3p classdesc浮动元素总宽度超容器换行时因高度不一致导致布局错乱/pdiv classfloat-wrap-errordiv classsmall-float1/divdiv classsmall-float styleheight: 180px;2高度更高/divdiv classsmall-float3换行异常/div/divh3 stylemargin-top: 20px;Grid 无换行异常对比/h3div classgrid-safediv classgrid-item1/divdiv classgrid-item styleheight: 180px;2高度更高/divdiv classgrid-item3布局稳定/div/div/div/body/html说明图示父元素.parent因为子元素都浮动无法感知子元素高度导致高度塌陷仅显示边框非浮动的.sibling元素被浮动元素覆盖只有文字会绕开体现“相邻元素错乱”的问题。3. 清除浮动的4种方法重点分场景使用方法1额外标签法最简单兼容性好用法在所有浮动元素的末尾添加一个空的块级元素如div classclear/div给该元素设置clear: both;优点简单易懂兼容性好支持所有浏览器缺点添加无意义的空标签语义化差不利于代码维护。方法2父元素设置overflow简洁常用用法给浮动元素的父容器设置overflow: hidden/auto/scroll推荐overflow: hidden无滚动条原理触发父元素的BFC让父元素感知到浮动元素的高度优点代码简洁无需添加额外标签缺点如果父元素内有超出内容会被隐藏需确认无超出内容场景。方法3父元素设置伪元素清除浮动推荐语义化好用法给父容器添加一个伪元素::after设置如下样式.parent::after {content: ; /* 伪元素必须有content */display: block; /* 转为块级元素 */clear: both; /* 清除左右浮动 */height: 0; /* 避免占用空间 */visibility: hidden; /* 隐藏伪元素 */}优点语义化好不添加无意义标签兼容性好可复用封装为公共类缺点代码比overflow法稍多。方法4父元素也设置浮动不推荐副作用大用法给浮动元素的父容器也设置float: left/right缺点会让父元素也脱离文档流导致父元素的父容器塌陷引发连锁问题仅在特殊场景使用。示例这个示例会分别展示额外标签法、overflow 法、伪元素法、父元素浮动法的实现并标注优缺点。HTML!DOCTYPE htmlhtml langzh-CNheadmeta charsetUTF-8title清除浮动的4种方法TAB4空格/titlestyle* {margin: 0;padding: 0;box-sizing: border-box;}body {padding: 20px;line-height: 1.6;}.demo {margin-bottom: 40px;border: 1px solid #eee;padding: 20px;}h4 {margin-bottom: 10px;color: #333;}.desc {color: #666;margin-bottom: 10px;font-size: 14px;}.box {border: 3px solid #666;margin-bottom: 10px;}.float-item {float: left;width: 100px;height: 100px;background-color: #b3e5fc;margin: 5px;}/* -------------------- 方法1额外标签法 -------------------- */.clear {clear: both;}/* -------------------- 方法2overflow 法 -------------------- */.overflow-clear {overflow: hidden; /* 触发BFC清除浮动 */}/* -------------------- 方法3伪元素法推荐 -------------------- */.clearfix::after {content: ;display: block;clear: both;height: 0;visibility: hidden;}.clearfix {*zoom: 1; /* 兼容IE6/7 */}/* -------------------- 方法4父元素浮动法 -------------------- */.parent-float {float: left;width: 100%; /* 必须设宽度否则收缩 */}/* -------------------- Grid 无需清除浮动对比 -------------------- */.grid-no-clear {display: grid;grid-template-columns: repeat(auto-fit, 100px);gap: 5px;border: 3px solid #4caf50;padding: 5px;}.grid-no-clear .float-item {float: none; /* 取消浮动 */margin: 0;}/style/headbody!-- 方法1额外标签法 --div classdemoh4方法1额外标签法/h4p classdesc优点简单缺点增加无意义空标签/pdiv classboxdiv classfloat-item浮动1/divdiv classfloat-item浮动2/divdiv classclear/div !-- 额外空标签清除浮动 --/div/div!-- 方法2overflow 法 --div classdemoh4方法2overflow 法简单场景推荐/h4p classdesc优点代码简洁缺点超出内容会被隐藏/pdiv classbox overflow-cleardiv classfloat-item浮动1/divdiv classfloat-item浮动2/div/div/div!-- 方法3伪元素法 --div classdemoh4方法3伪元素法生产环境首选/h4p classdesc优点语义化好、可复用缺点代码稍多/pdiv classbox clearfixdiv classfloat-item浮动1/divdiv classfloat-item浮动2/div/div/div!-- 方法4父元素浮动法 --div classdemoh4方法4父元素浮动法不推荐/h4p classdesc优点暂时解决塌陷缺点父元素脱离文档流引发连锁问题/pdiv classbox parent-floatdiv classfloat-item浮动1/divdiv classfloat-item浮动2/div/divdiv styleclear: both;/div !-- 手动清除父元素浮动的影响 --/div!-- Grid 对比 --div classdemoh4Grid 无需清除浮动更优方案/h4p classdescGrid 布局天然包裹子元素无需任何清除浮动操作布局更简洁稳定/pdiv classgrid-no-cleardiv classfloat-item项1/divdiv classfloat-item项2/divdiv classfloat-item项3/div/div/div/body/html说明图示额外标签法在浮动元素末尾加div classclear/div通过clear: both清除浮动overflow 法给父元素加overflow: hidden触发 BFC让父元素包裹浮动子元素伪元素法通过::after伪元素模拟“额外标签”无实际空标签语义化最佳父元素浮动法父元素也浮动会解决自身塌陷但会让父元素脱离文档流影响后续布局仅特殊场景使用。实操练习用4种方法分别清除浮动对比每种方法的效果和代码差异总结适用场景。float布局的优缺点与替代方案优点兼容性好支持旧浏览器实现简单适合简单的横向排列布局缺点容易出现布局错乱清除浮动繁琐不适合复杂布局如垂直居中、自适应布局替代方案现代布局优先使用Flex/Grid布局float仅用于兼容旧项目或简单文本环绕场景。示例这个示例会用 float 实现简单横向布局再用 Flex/Grid 实现相同效果对比优缺点。HTML!DOCTYPE htmlhtml langzh-CNheadmeta charsetUTF-8titlefloat 优缺点与替代方案TAB4空格 Grid 核心/titlestyle* {margin: 0;padding: 0;box-sizing: border-box;}body {padding: 20px;line-height: 1.6;}.demo {margin-bottom: 40px;border: 1px solid #eee;padding: 20px;}h3 {margin-bottom: 15px;color: #333;}.item {width: 100px;height: 100px;background-color: #81d4fa;margin: 5px;text-align: center;line-height: 100px;color: #333;}.tip {color: #666;margin-top: 10px;font-size: 14px;}/* -------------------- float 实现横向布局 -------------------- */.float-container {border: 2px solid #ff9800;padding: 10px;overflow: hidden; /* 必须清除浮动 */}.float-container .item {float: left;}/* -------------------- Flex 实现过渡方案 -------------------- */.flex-container {border: 2px solid #2196f3;padding: 10px;display: flex;flex-wrap: wrap;gap: 5px; /* 替代margin更便捷 */}/* -------------------- Grid 实现现代首选 -------------------- */.grid-container {border: 2px solid #4caf50;padding: 10px;display: grid;/* 自适应列数每列100px自动换行 */grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));gap: 5px;/* Grid 便捷实现垂直居中float 需复杂处理 */align-items: center;min-height: 120px;}/style/headbodydiv classdemoh3float 实现横向布局缺点明显/h3div classfloat-containerdiv classitem1/divdiv classitem2/divdiv classitem3/div/divp classtip缺点需手动清除浮动、无法便捷垂直居中、margin 间距需手动调整、适配复杂/p/divdiv classdemoh3Flex 实现横向布局过渡方案/h3div classflex-containerdiv classitem1/divdiv classitem2/divdiv classitem3/div/divp classtip优点无需清除浮动、支持换行/居中缺点一维布局复杂二维布局需嵌套/p/divdiv classdemoh3Grid 实现横向布局现代首选/h3div classgrid-containerdiv classitem1/divdiv classitem2/divdiv classitem3/div/divp classtip优点二维布局更灵活、自适应列数、天然居中、无需清除浮动、间距可控float 所有缺点均规避/p/div/body/html说明图示float 实现横向布局必须手动清除浮动且无法便捷实现垂直居中、自动间距等Flex 布局一行display: flex即可实现横向排列支持flex-wrap、align-items等属性无需处理浮动问题Grid 布局适合更复杂的二维布局grid-template-columns可实现自适应列数比 float 灵活得多。三、当日作业30分钟1. 用float实现一个导航栏导航项横向排列左浮动分别用“伪元素法”和“overflow法”清除浮动确保父容器高度正常2. 用float实现一个图文环绕效果图片左浮动文本围绕图片排列3. 总结4种清除浮动方法的优缺点和适用场景编写笔记结合代码案例说明。

相关新闻

Qwen3-ASR-0.6B部署教程:Windows 11 WSLg图形界面+GPU直通完整配置

Qwen3-ASR-0.6B部署教程:Windows 11 WSLg图形界面+GPU直通完整配置

Qwen3-ASR-0.6B部署教程:Windows 11 WSLg图形界面GPU直通完整配置 语音识别本地化部署新选择:6亿参数轻量模型,支持中英文混合识别,完全离线运行 1. 环境准备与系统要求 在开始部署之前,请确保你的Windows 11系统满足…

2026/5/17 4:55:17 阅读更多 →
无需编程基础:用OFA模型快速实现图片语义分析

无需编程基础:用OFA模型快速实现图片语义分析

无需编程基础:用OFA模型快速实现图片语义分析 1. 什么是图片语义分析? 你有没有遇到过这样的情况:看到一张图片,想知道图片里的内容是否和某句话描述的一致?比如看到一张猫在沙发上的照片,想知道"这…

2026/5/17 4:55:17 阅读更多 →
BGE-Reranker-v2-m3快速验证:test.py脚本输出解读教程

BGE-Reranker-v2-m3快速验证:test.py脚本输出解读教程

BGE-Reranker-v2-m3快速验证:test.py脚本输出解读教程 1. 学习目标与前置知识 BGE-Reranker-v2-m3是智源研究院开发的高性能重排序模型,专门用于提升RAG系统的检索精度。本教程将带你快速上手使用test.py脚本进行模型验证,并详细解读输出结…

2026/5/17 4:55:13 阅读更多 →

最新新闻

快速上手Native-Turbo:从安装到部署的30分钟速成指南

快速上手Native-Turbo:从安装到部署的30分钟速成指南

快速上手Native-Turbo:从安装到部署的30分钟速成指南 【免费下载链接】native-turbo Native-Turbo is the performance optimization framework of native microarchitecture of operating system. 项目地址: https://gitcode.com/openeuler/native-turbo 前…

2026/7/3 3:14:49 阅读更多 →
【无标题】小学期课设

【无标题】小学期课设

对板子进行焊接与调试,测绘出波形

2026/7/3 3:12:48 阅读更多 →
居家饮食百搭冲调,庆葆堂菊粉固体饮料,日常纤维好搭档

居家饮食百搭冲调,庆葆堂菊粉固体饮料,日常纤维好搭档

均衡的日常饮食离不开足量植物纤维,今天分享一款百搭便捷的菊粉固体饮料,来自山东庆葆堂,以菊苣根为单一萃取原料,打造干净纯粹的日常冲饮选择。 产品全程植物提纯,做到 0 蔗糖、0 脂肪,粉质细腻轻盈&#…

2026/7/3 3:06:45 阅读更多 →
基于STM32单片机WIFI云平台物联网 空气质量 烟雾温湿度PM2.5 1(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_

基于STM32单片机WIFI云平台物联网 空气质量 烟雾温湿度PM2.5 1(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_

基于STM32单片机WIFI云平台物联网 空气质量 烟雾温湿度PM2.5 1(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_ WIFI云平台传输烟雾PM2.5温湿度声光报警 版本0:STM32F103C8T6单片机进行数据处理PM2.5检测当前粉尘浓度DHT11温湿度传感…

2026/7/3 3:04:43 阅读更多 →
调试与对拍:算法竞赛的“除虫指南”

调试与对拍:算法竞赛的“除虫指南”

引言这是每个算法竞赛选手都经历过的“至暗时刻”:你在本地跑了样例,完美通过;你甚至自己构造了几组边界数据,也都通过了。你满怀信心地提交代码,几秒钟后——Wrong Answer。你盯着屏幕看了十分钟,反复检查…

2026/7/3 3:04:43 阅读更多 →
2026最新3款基础版免费AI编程工具vibe coding权威实测上手教程

2026最新3款基础版免费AI编程工具vibe coding权威实测上手教程

朋友找我帮忙做一个微信小程序,预算不高、时间紧。我说试试用 AI 全自动开发,他半信半疑。三天后小程序上线了。我是一名独立全栈开发者,前后端开发都负责,累计靠vibe coding落地8个完整商业项目,日常大量口述需求交付…

2026/7/3 3:02:43 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻