清除浮动的重要性及解决办法

由于父级盒子很多情况下,不方便给高度,但是子盒子浮动又不占有位置,最后父级盒子高度为0时,就会影响下面的标准流盒子。

一、为什么要清除浮动

  • 父元素高度塌陷: 如果父元素内部的所有子元素都浮动了,并且没有设置明确的高度,父元素可能会因为子元素脱离文档流而坍塌为零高度,导致父元素的背景、边框等样式无法显示。
  • 后续元素布局错乱: 浮动元素会影响后续元素的布局,可能导致后续元素环绕浮动元素,或者出现垂直重叠等问题。

二、清除浮动的方法

1.额外标签法

额外标签法也称为隔墙法,是W3C推荐的做法。

  • 原理: clear 属性指定一个元素是否允许其周围的浮动元素。 它有四个值:leftrightboth 和 none。 设置了 clear 属性的元素会强制移动到指定的浮动元素下方。

  • 用法: 在浮动元素后面的元素上添加 clear 属性。(在浮动元素末尾添加一个空的标签)

  • 优点: 简单易懂,兼容性好。

  • 缺点: 需要添加额外的 HTML 元素,可能影响语义化。

<div class="container"><div class="float-left">左浮动</div><div class="float-right">右浮动</div><div class="clear"></div>  <!-- 添加一个空的清除元素 -->
</div><style>.container {border: 1px solid black;overflow: hidden; /* 或者使用其他方法解决父元素高度塌陷,详见下文 */}.float-left {float: left;width: 100px;height: 50px;background-color: lightblue;}.float-right {float: right;width: 100px;height: 50px;background-color: lightgreen;}.clear {clear: both; /* 清除左右浮动 */}
</style>

2.父级添加overflow

可以给父级添加 overflow 属性,将其属性值设置为 hidden , auto 或 scroll 。

  • 原理: overflow 属性定义了当一个元素的内容溢出其容器时发生的事情。 当 overflow 属性的值不是 visible 时(例如,hiddenautoscroll),它会创建一个新的块级格式化上下文,其可以包含浮动元素,从而解决父元素高度塌陷的问题。

  • 用法: 将 overflow 属性添加到浮动元素的父元素上。

  • 优点: 不需要添加额外的 HTML 元素,简洁方便。

  • 缺点: 可能导致内容被裁剪或出现滚动条 (如果使用 auto 或 scroll),具体取决于内容是否超出容器。 如果父元素有定位,overflow: hidden 可能会影响 z-index

<div class="container"><div class="float-left">左浮动</div><div class="float-right">右浮动</div>
</div><style>.container {border: 1px solid black;overflow: hidden; /* 或者 auto, scroll */}.float-left {float: left;width: 100px;height: 50px;background-color: lightblue;}.float-right {float: right;width: 100px;height: 50px;background-color: lightgreen;}
</style>

3. :after 伪元素法

:after 是额外标签法的升级版,也是父级元素添加。

  • 原理: 在父元素的末尾添加一个伪元素,并使用 clear: both 清除浮动。 这种方法不需要添加额外的 HTML 元素,而且代码简短易懂。

  • 用法: 在浮动元素的父元素上使用 :after 伪元素,并添加 clear: both 属性。

  • 优点: 不需要添加额外的 HTML 元素,代码简洁,兼容性好,推荐使用。

  • 缺点: 需要理解伪元素的概念。

<div class="container"><div class="float-left">左浮动</div><div class="float-right">右浮动</div>
</div><style>.container {border: 1px solid black;}.container::after {content: "";display: block; /* 或者 table */clear: both;}.float-left {float: left;width: 100px;height: 50px;background-color: lightblue;}.float-right {float: right;width: 100px;height: 50px;background-color: lightgreen;}
</style>

4.双伪元素清除浮动(给父元素添加)

  • 优点:代码更简洁
  • 缺点:照顾低版本浏览器

三、总结

为什么要清除浮动?

  • 父级没高度。
  • 子盒子浮动了。
  • 影响下面布局了,就应该清除浮动。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/79365.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

域名与官网的迷思:数字身份认证的全球困境与实践解方-优雅草卓伊凡

域名与官网的迷思&#xff1a;数字身份认证的全球困境与实践解方-优雅草卓伊凡 一、官网概念的法律与技术界定 1.1 官网的实质定义 当卓伊凡被问及”公司域名就是官网吗”这一问题时&#xff0c;他首先指出&#xff1a;”这相当于问’印着某公司logo的建筑就是该公司总部吗’…

kotlin flatMap 变换函数的特点和使用场景

Kotlin 中的 flatMap 是一个非常常用的函数&#xff0c;尤其在处理集合&#xff08;如 List、Set 等&#xff09;时。它结合了 map 和 flatten 的功能&#xff0c;常用于将多个集合扁平化为一个单一的集合。 一、flatMap 函数的特点 转换 扁平化&#xff1a; 对集合中的每个元…

java学习之数据结构:二、链表

本节介绍链表 目录 1.什么是链表 1.1链表定义 1.2链表分类 2.链表实现 2.1创建链表 1&#xff09;手动创建 2&#xff09;创建链表类进行管理链表的相关操作 2.2添加元素 1&#xff09;头插法 2&#xff09;尾插法 3&#xff09;任意位置插入 2.3删除 2.4查找 1&…

【计算机网络-应用层】解析HTTP会话保持:Cookie与Session的原理与实践

&#x1f4da; 博主的专栏 &#x1f427; Linux | &#x1f5a5;️ C | &#x1f4ca; 数据结构 | &#x1f4a1;C 算法 | &#x1f152; C 语言 | &#x1f310; 计算机网络 上篇文章&#xff1a;实现HTTP服务器 下篇文章&#xff1a;传输层协议-UDP 文章摘要&…

[ Qt ] | 第一个Qt程序

1. 创建Qt项目 我们打开Qt Create工具&#xff0c;左上角“文件”&#xff0c;新建文件。 --- --- --- --- 这个是我们的APP“走出国门”的时候&#xff0c;要关注的&#xff0c;这里就不说了。 后面这两个直接默认&#xff0c;下一步就行~~。 2. 项目默认内容 下面就是Qt C…

影刀RPA中新增自己的自定义指令

入门到实战明细 1. 影刀RPA自定义指令概述 1.1 定义与作用 影刀RPA的自定义指令是一种强大的功能&#xff0c;旨在提高流程复用率&#xff0c;让用户能够个性化定制指令&#xff0c;实现流程在不同应用之间的相互调用。通过自定义指令&#xff0c;用户可以将常用的、具有独立…

LangChain:重构大语言模型应用开发的范式革命

2022年10月22日,Harrison Chase在GitHub上提交了名为LangChain的开源项目的第一个代码版本。这个看似普通的代码提交,却悄然开启了一场重塑大语言模型(LLM)应用开发范式的技术革命。彼时,距离ChatGPT引爆全球人工智能浪潮尚有一月之遥,但LangChain的诞生已经预示了LLM技术…

区块链+医疗:破解数据共享困局,筑牢隐私安全防线

在医疗健康领域&#xff0c;数据共享与隐私保护一直是一对难以调和的矛盾。一方面&#xff0c;分散在不同机构的医疗数据&#xff08;如电子病历、检查报告、用药记录&#xff09;阻碍了诊疗效率和科研进展&#xff1b;另一方面&#xff0c;患者隐私泄露事件频发&#xff0c;加…

pycharm导入同目录下文件未标红但报错ModuleNotFoundError

此贴仅为记录debug过程&#xff0c;为防后续再次遇见 问题 问题情境 复现文章模型&#xff0c;pycharm项目初次运行 问题描述 在导入同目录下其它文件夹中的python文件时&#xff0c;未标红&#xff0c;但运行时报错ModuleNotFoundError 报错信息 未找到该模块 Traceback …

启发式算法-蚁群算法

蚁群算法是模拟蚂蚁觅食行为的仿生优化算法&#xff0c;原理是信息素的正反馈机制&#xff0c;蚂蚁通过释放信息素来引导同伴找到最短路径。把问题的元素抽象为多条路径&#xff0c;每次迭代时为每只蚂蚁构建一个解决方案&#xff0c;该解决方案对应一条完整的路径&#xff0c;…

Redis 脚本:深入理解与实践指南

Redis 脚本:深入理解与实践指南 引言 Redis 是一款高性能的键值存储数据库,广泛应用于缓存、消息队列、分布式锁等领域。脚本在 Redis 中扮演着至关重要的角色,它允许开发者以编程的方式执行复杂的操作,提高数据处理的效率。本文将深入探讨 Redis 脚本的概念、应用场景、…

Vue3 Echarts 3D立方体柱状图实现教程

文章目录 前言一、实现原理二、series ——type: "pictorialBar" 简介2.1 常用属性 三、代码实战3.1 封装一个echarts通用组件 echarts.vue3.2 实现一个立方体柱状图&#xff08;1&#xff09;首先实现一个基础柱状图&#xff08;2&#xff09;添加立方体棱线&#x…

每天一道面试题@第五天

1.包装类型的缓存机制了解么&#xff1f; 指部分包装类在创建对象时&#xff0c;会将一定范围内的对象缓存起来&#xff0c;当再次使用相同值创建对象时&#xff0c;优先从缓存中获取&#xff0c;而不是重新创建新对象。【提高性能】【节省内存】 列举几个常见的包装类缓存机…

mysql--索引

索引作为一种数据结构&#xff0c;其用途是用于提升检索数据的效率。 分类 普通索引&#xff08;INDEX&#xff09;&#xff1a;索引列值可重复 唯一索引&#xff08;UNIQUE&#xff09;&#xff1a;索引列值必须唯一&#xff0c;可以为NULL 主键索引&#xff08;PRIMARY KEY&a…

王道考研数据结构课后题代码题(2026版)——排序部分

一、前言 本合集以王道考研《数据结构》辅导书&#xff08;2026版&#xff09;课后习题代码题部分为参考依据&#xff0c;给出课后习题代码题的可执行代码的实现&#xff0c;本合集使用编程语言以C/C语言为主&#xff0c;也不限于使用Python和Java语言&#xff0c;本套合计代码…

AVFormatContext 再分析零

随着对于AVFormatContext 各个参数的学习&#xff0c;逐渐可以从 整体架构上 再认识一下 AVFormatContext 了。 还是从解封装的第一步开始。 int avformat_open_input(AVFormatContext **ps, const char *url, ff_const59 AVInputFormat *fmt, AVDictionary **options); 实际上…

uniapp打包apk详细教程

目录 1.打apk包前提条件 2.获取uni-app标识 3.进入dcloud开发者后台 4.开始打包 1.打apk包前提条件 1.在HBuilderX.exe软化中&#xff0c;登录自己的账号 2.在dcloud官网&#xff0c;同样登录自己的账号。没有可以免费注册。 2.获取uni-app标识 获取方法&#xff1a;点…

Vue2 和 Vue3 的核心区别

1. 响应式原理&#xff1a;从「手动挡」到「自动挡」 Vue2&#xff1a; 使用 Object.defineProperty 监听数据变化&#xff0c;但无法检测新增属性和数组索引修改&#xff0c;需要借助 Vue.set。 // Vue2 中修改数组元素不会触发视图更新 this.list[0] 新值; // ❌ 不…

EMMC存储性能测试方法

记于 2022 年 9 月 15 日 EMMC存储性能测试方法 - Wesley’s Blog 参考Android-emmc性能测试 | 一叶知秋进行实践操作 dd 命令 页面缓存 为了测试 emmc 的真实读写性能&#xff0c;我们需要先把页面缓存给清理&#xff1a; echo 1 > /proc/sys/vm/drop_caches console:…

软件管理(安装方式)

1.rpm安装 1.1.rpm介绍 rpm软件包名称: 软件名称 版本号(主版本、次版本、修订号) 操作系统 -----90%的规律 举例:openssh-6.6.1p1-31.el7.x86_64.rpm 数字是版本号:第一位主版本号,第二位次版本号,带横杠的是修订号, el几---操作系统的版本。 #用rpm安装需要考虑如下信…