清除浮动的五种方法

2023-11-02

为什么要清除浮动?因为往往浮动后的子元素因为脱离了标准流,不能自动撑起父元素的高度,所以会对后续布局产生影响,对此清除浮动不如理解为清除浮动产生的影响更为合理。

例如:我们设置了两个盒子如图所示,粉色为父盒子,只有宽度没有高度,蓝色盒子有宽有高,粉色盒子的高由蓝盒子的高度撑开。

但是给蓝色的子盒子设置了左浮动后,脱离了标准流,无法再撑开粉盒子,可以看到粉盒子高度变成了0;


 

清除浮动有五种方法:

  1. 直接设置父元素的高度
  2. 额外标签法
  3. 单伪元素法
  4. 双伪元素法
  5. overflow-hidden

一:直接设置父元素的高度

因为子元素设置了浮动产生的影响就是父元素的高度无法被子元素撑开,所以直接给父元素设置高度是一个非常简便的做法。但是这种方法也有缺点,就是父元素不再是被子元素撑开的,高度有了限制,如果子元素内容较多,则会溢出父元素

 <style>
        .father{
            width: 600px;
            height: 500px;  //直接设置父元素的高度
            background-color: rgb(255, 152, 152);
        }

        .son{
            float: left;
            width: 300px;
            height: 500px;
            background-color: rgb(105, 133, 255);
        }
    </style>
</head>
<body>
    <div class='father'>
        <div class="son"></div>
    </div>
</body>

二:额外标签法

额外标签法即在父元素内容末尾添加一个块级元素,然后给该块级元素设置 clear:both;  缺点为会使代码内容添加很多不必要地标签,看起来较为混乱

 <style>
        .father{
            width: 600px;
            background-color: rgb(255, 152, 152);
        }

        .son{
            float: left;
            width: 300px;
            height: 500px;
            background-color: rgb(105, 133, 255);
        }

        .clear{  //给添加的块级元素添加属性
            clear: both;
        }
    </style>
</head>
<body>
    <div class='father'>
        <div class="son"></div>
        <div class="clear"></div>  //在父元素内容末尾添加一个块级元素,多为div
    </div>
</body>

三:单伪元素法

该方法与添加额外标签相似,只不过是在父元素内容最后天添加了一个伪元素,给其 display 设置为块级元素,并设置必需的 content 属性 ,最后设置 clear:both;   此方法优点为不会让代码内容乱糟糟,不会出现多余的标签,使用较多 。

 <style>
        .father{
            width: 600px;
            background-color: rgb(255, 152, 152);
        }

        .son{
            float: left;
            width: 300px;
            height: 500px;
            background-color: rgb(105, 133, 255);
        }

       .father::after{  //给父元素内容末尾添加了伪元素
           content: '';
           display: block;
           clear: both;
       }
    </style>
</head>
<body>
    <div class='father'>
        <div class="son"></div>
    </div>
</body>

为了避免一些较小众的浏览器也可以兼容此方法,往往会补充一些代码:作用为让网页看不到伪元素

.father::after{
           content: '.';
           display: block;
           clear: both;
           height: 0;
           visibility: hidden;
       }

四:双伪元素法:

此方法多用于清除盒子塌陷问题,另一个文章讲到过,也可以用于清除浮动,但是使用单伪元素更多

 <style>
        .father{
            width: 600px;
            background-color: rgb(255, 152, 152);
        }

        .son{
            float: left;
            width: 300px;
            height: 500px;
            background-color: rgb(105, 133, 255);
        }

       .father::before,  //双伪元素
       .father::after{
           content: '';
           display: table;
       }
       .father::after{
           clear:both;
       }
    </style>
</head>
<body>
    <div class='father'>
        <div class="son"></div>
    </div>
</body>

五:overflow-hidden

直接给父元素设置 overflow-hidden 即可,十分方便;

 <style>
        .father{
            overflow: hidden;  //直接给父元素设置 overflow:hidden 即可
            width: 600px;
            background-color: rgb(255, 152, 152);
        }

        .son{
            float: left;
            width: 300px;
            height: 500px;
            background-color: rgb(105, 133, 255);
        }
    </style>
</head>
<body>
    <div class='father'>
        <div class="son"></div>
    </div>
</body>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

清除浮动的五种方法 的相关文章

  • 为什么 length 是 `Array` 的属性而不是 `Array.prototype` 链

    所以我在 V8 控制台上玩了很多 我做到了 Object getOwnPropertyNames 我期望得到 结果 然而 length 所以这意味着不是成为原型链的一部分 length是所有人的成员财产Array对象 这是一个错误 还是有任
  • 启用/禁用由用户输入确定的复选框

    我有一个简单的表单 用户可以在其中输入他的联系号码 如果联系号码以 07 开头 则该复选框已启用 其他我需要禁用它的复选框 我已经编写了一些代码 但我面临的问题是 当用户键入 01 时 它会被禁用 但如果他们继续在 01 之后添加任何其他数
  • 更快地开发和测试打印样式表的方法(避免每次都进行打印预览)?

    这是我现在的流程 保存对 print css 的更改 打开浏览器并刷新页面 右键单击并选择 打印 gt 打印预览 Firefox 但实际上是任何浏览器 第三步让我烦恼 我想知道是否可以通过插件或其他东西将其从流程中删除 只需选择以打印媒体形
  • IE 中的 HR 标签 - 删除边框

    在除 IE7 及更低版本之外的其他浏览器中 hr 在 hr 标签周围显示边框 但我不希望它出现 我已经尝试过这个解决方案 但它周围似乎仍然有边框 它看起来像这样 我该如何摆脱它 See http webdesign about com od
  • 如何从 JSON 响应重定向?

    所以我尝试使用 Flask 和 Javascript 上传器 Dropzone 上传文件并在上传完成后重定向 文件上传正常 但在烧瓶中使用传统的重定向 return redirect http somesite com 不执行任何操作 页面
  • 扩展位置绝对div超出溢出隐藏div

    我已经好几个月没有做过CSS了 所以我可能会错过一些简单的东西 但无论解决方案是什么 我都无法弄清楚 所以问题就在这里 这是我的代码的简化版本 div style height 100 width 200px div style margi
  • JavaScript 测验在提出所有问题之前结束

    我现在正在学习 JavaScript 并且正在创建一个测验 我的测验运行正常 控制台中没有任何错误 但它会跳过问题 有时会在回答所有问题之前结束测验 即使给出正确答案 也会减少时间 我不太确定为什么它会这样做 因为在我看来它的编码是正确的
  • html css 下拉菜单

    这是我第一次在 Stack Overflow 上发帖 我不熟悉论坛发帖规定 所以请让我知道我做错了什么 我在论坛中研究过这个问题 但我所遇到的一切都没有给我明确的答案 我试图从 新闻 元素创建一个下拉菜单 但在运行代码时我从未得到任何可见的
  • Google 地图 API:忽略 DirectionService 请求中的季节性限制

    我目前正在开发一张地图 其中显示两点之间的最短路线 使用不同的交通工具 我注意到 有时 例如在冬季关闭的道路不会被考虑在内 我发现我可以使用方向服务 下面的代码 忽略高速公路 收费站和渡轮 但我一生都无法弄清楚如何 是否可以忽略季节性限制
  • 如何检测元素内容何时发生变化

    我正在寻找一种方法来监视元素内动态填充 无页面重新加载 内容 以便我可以将类添加到另一个元素 到目前为止我有这个 HTML div class message container div class messages error span
  • @font-face 和 font-variant 是个坏主意吗?

    如果我使用 font face字体和font variant small caps对于相同的选择器 字体将回退到 Safari 中的下一个系统默认字体 我该如何解决这个问题 我一开始在创建一个示例来复制您的问题时遇到了一些麻烦 这让我意识到
  • Node.js 未处理的“错误”事件

    我编写了一个简单的代码并将其保存在文件 try js 中 var http require http var makeRequest function message var options host localhost port 8080
  • JavaScript 数组扩展语法的时间复杂度是多少?

    我想知道在 JavaScript 中使用数组扩展的时间复杂度是多少 是线性 O n 还是常数 O 1 下面的语法示例 let lar Math max nums 传播称为 Symbol iterator 有关对象的属性 对于数组 这将迭代数
  • 如何让div与包含td的高度相匹配?

    我沿着桌子的一排布置了三个 面板 一个比另外两个高 我希望所有三个面板都与最高的一个的高度相匹配 我尝试将 div 的样式设置为 height 100 但是即使包含的 tds 增长 短面板仍然很短 我的 HTML 是由 JSF 生成的 因此
  • 使用 AngularJS 多部分表单数据将文件上传到 Google Cloud Storage

    我正在尝试使用 AngularJS 中指定的多部分方法将图像文件上传到 Google Cloud Storagehttps cloud google com storage docs json api v1 how tos upload m
  • RoR - Rails 中的大文件上传

    我有一个 Rails Web 应用程序 允许用户上传视频 视频存储在 NFS 安装的目录中 当前的设置适用于较小的文件 但我也需要支持大文件上传 最多 4GB 当我尝试上传 4GB 文件时 它最终会发生 但从用户体验的角度来看很糟糕 上传开
  • 如何在表格列标题处垂直旋转文本

    我用过这个数据表 http www datatables net 在我的网页上 这是fiddle http jsfiddle net fxju7 2 链接我放置代码的地方 我想要 第一个数字第二个数字列应该垂直旋转 我已经做到了 但是 问题
  • 我可以根据同一容器中另一个元素的大小强制内联文本换行吗?

    考虑这个 jsbin http jsbin com ElIKOKe 3 edit html css output 我有这个html div class container span The lime outlined container h
  • Node npm 包抛出使用严格:全局发布和安装后未找到命令

    我正在尝试发布 npm 包 当我全局安装该包并尝试运行 cli 命令时 我收到此错误 nvm versions node v0 12 2 bin myPack line 1 use strict command not found nvm
  • 将 RequireJS 与遗留代码结合使用

    我正在处理一个非常大的项目 该项目使用 包含带有脚本标记的 javascript 文件的旧版 JSP 页面 使用其他 javascript 模块而不使用 RequireJS 的骨干模型和视图 现在 我们希望开始将 RequireJS 与 j

随机推荐

  • Visual C++ 2010如何解决程序运行闪退问题

    使用Visual C 调试C语言控制台程序 一直出现程序正常运行结束就闪退 看不到控制台的的运行结果 经过查资料尝试 得到几种解决方法 1 在return 0 前面加上getchar 利用getchar 函数等待输入 直到按回车才结束的性质
  • 6款热门的SpringCloud微服务开源项目,总有适合你的

    今天介绍六款比较热门的SpringCloud微服务项目 感兴趣的可以clone下来研究一下 相信对你学习微服务架构很有帮助 一 Cloud Platform 介绍 Cloud Platform是国内首个基于Spring Cloud微服务化开
  • Echarts的一些配置

    前言 在此记录echarts使用过程中的一些配置 开始 一 整体使用 以一个环形图为例 html div div js部分 drawChart list let myChart this echarts init document getE
  • 2021-07-19王汕7.19国际黄金今日行情资讯分析,期货原油伦敦金投资操作建议

    黄金行情走势分析 周一 7月19日 现货黄金小幅上涨 上周五 7月16日 金价跌近1 主要因为零售销售意外增长提振美元指数上涨 不过消费者信心指数下跌以及股市下滑限制了金价跌势 黄金守在每盎司1800美元上方 但分析师表示 一个关键驱动因素
  • js随机生成16进制颜色值

    js随机生成16进制颜色值 背景 很多情况下 我们会遇到给某个dom设置随机颜色 这里采用js函数直接生成 并返回随机16进制颜色值 function getRandomColor var str var arr 0 1 2 3 4 5 6
  • Java中绕过SSL/TLS验证:开发与风险透视

    警告 本文提供的方法绕过SSL TLS证书验证 这在某些开发场景下可能是有用的 但使用这些方法会导致严重的安全隐患 在生产环境中 你应该始终验证SSL TLS证书以确保数据的安全传输 引言 在日常的软件开发中 我们经常需要与其他服务进行HT
  • C++中随机函数rand()和srand()的用法

    一 rand 函数名 rand 功 能 随机数发生器 用 法 int rand void 所在头文件 stdlib h 函数说明 rand 的内部实现是用线性同余法做的 它不是真的随机数 因其周期特别长 故在一定的范围里可看成是随机的 ra
  • 第6章-selenium的使用+iframe+图形验证码

    第6章 selenium的使用 iframe tesseract 一 ajax基本介绍 1 ajax 2 获取ajax数据的方式 二 selenium 1 selenium介绍 2 PhantomJS常用语法 3 selenium的使用 3
  • 搭建Vue-Cli以及创建Vue项目

    搭建Vue Cli脚手架 前言 搭建脚手架需要node js的支持 所以先安装node js 1 安装node js 图片 双击打开 上图程序 一直点击下一步 待安装完成 2 安装npm 1 打开cmd命令 输入node v 查看node安
  • [shell] awk 获取指定IP对应的网口

    awk 获取指定IP对应的网口 引子 awk简介 语法规则 实例解析 awk 处理流程 命令解析 还没结束 思考 参考 引子 项目中需要根据 Linux主机 IP 地址获取其对应网口名称 如 IP地址为192 168 130 12 其对应的
  • SQL笔记(1)——MySQL创建数据库(收藏吃灰版)

    本文详细记录MySQL创建一个数据库的过程 不只是构建步骤 更多的是每一步涉及到的知识点 一般创建数据库有两种方式 一种是命令 另外一种就是通过数据库管理工具 本文主要记录通过命令的方式创建 后面的学习也都是基于这个数据库进行的 场景 创建
  • React中的条件渲染

    React中的条件渲染 Vue js中使用v if v else实现模板中的条件渲染 小程序中使用wx if wx else实现模板中的条件渲染 React中没有模板 即不需要v if 也没有指令系统 即没有v if 条件渲染需要手工实现
  • Springboot整合Mybatis之数据源配置

    spring datasource driver class name com mysql cj jdbc Driver spring datasource url jdbc mysql localhost 3306 springboot
  • androidstudio3.0解决gradle plugin 和android_apt不兼容问题

    将项目下的 classpath com neenbedankt gradle plugins android apt 1 8 删掉 和modul下的apply plugin com neenbedankt android apt 删掉 ap
  • opengl嵌入pyqt5编译的分割窗口中

    opengl嵌入pyqt5编译的分割窗口中 向大部分商业仿真软件一样 使用opengl显示三维模型 首先需要将opengl的窗口嵌入到pyqt5编译的界面中 下面是一个小例子 python view plain copy from PyQt
  • AI-视频换脸

    本文涉及到的代码均已放置在我的github中 gt 链接 环境 Anaconda 集成 python 3 6 5 主要使用了 dlib numpy opencv 调用为cv2 os这四个库 录制 截屏 FSCapture 8 0 目的 将视
  • pycharm配置PyQt5,以及创建第一个项目

    认你已经安装好了pycharm 也正确安装了PyQt5 否则 请移步https www cnblogs com longbigbeard p 9628102 html来安装PyQt5 下一步 Tools gt External Tools
  • CTFHub---xss 反射型

    反射型 反射型xss攻击 Reflected XSS 又称为非持久性跨站点脚本攻击 它是最常见的类型的XSS 攻击代码的工作方式可以分为三个类型 1 持久型跨站 最直接的危害类型 跨站代码存储在服务器 数据库 2 非持久型跨站 反射型跨站脚
  • 特征工程的建立过程

    1 特征工程 1 1 了解特征工程 数据挖掘 二八原则 80 的精力 gt 选取特征 20 的精力 gt 模型融合等 基于数据分析与探索提取潜在有价值的特征 特征工程重要性 特征越好 模型的性能越出色 特征越好 构建的模型越简单 特征越好
  • 清除浮动的五种方法

    为什么要清除浮动 因为往往浮动后的子元素因为脱离了标准流 不能自动撑起父元素的高度 所以会对后续布局产生影响 对此清除浮动不如理解为清除浮动产生的影响更为合理 例如 我们设置了两个盒子如图所示 粉色为父盒子 只有宽度没有高度 蓝色盒子有宽有