建设网站可以赚钱吗鹰潭网站设计
建设网站可以赚钱吗,鹰潭网站设计,泰安人事考试网,重庆乐尚装饰工程有限公司本节课针对旧项目兼容必备的float布局展开学习#xff0c;理解float的原理、特性及左/右浮动的用法#xff0c;实操实现三栏布局与图文环绕效果。明晰浮动带来的父容器塌陷、元素覆盖等副作用#xff0c;重点掌握额外标签法、overflow法、伪元素法、父元素浮动法四种清除浮动…本节课针对旧项目兼容必备的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种清除浮动方法的优缺点和适用场景编写笔记结合代码案例说明。