CSS中clear清除元素容器浮动

常见的清除浮动的五种解决办法 方法一:使用带clear属性的空元素 在浮动元素后使用一个空元素如 <div class="clear"></div> 并在CSS中赋予 .clear{clear:both;} 属性即可清理浮动。亦可使用 <br class="clear" /> 或 <hr class="clear" /> 来进行清理。 方法二:使用CSS的overflow属性 给浮动元素的容器添加 overflow:hidden 或 overf. 阅读详情
http://www.111cn.net/cssdiv/css/45762.htm
在css中clear的功能就是清除浮动这样可以解决很多不兼容的问题,下面我来详细举例说明一下关于clear清除浮动具体问题分析。
1. 问题的由来 有这样一种情形:在一个容器(container)中,有两个浮动的子元素,如图一。

 

(图一 设计视图是一个父容器中含有二个浮动的子元素)

请问HTML代码应该怎么写?

很简单啦,几行字就够了。

 代码如下复制代码

<div>

<div style="float:left;width:45%;"></div>

<div style="float:right;width:45%;"></div>

</div>

上面的代码完全正确,但是如果在浏览器中一运行,就会出现意想不到的结果。

(图二 实际视图是子元素显示在父容器的外部)

两者好像脱离了关系一样,怎么会这样?

2. 问题的原因

其实,原因很简单,与浮动定位有关。

在CSS规范中,浮动定位不属于正常的页面流(page flow),是独立定位的。所以,只含有浮动元素的父容器,在显示时不考虑子元素的位置,就当它们不存在一样。这就造成了显示出来,父容器好像空容器一样。

3. 解决方法一:添加空元素

经典的解决方法,就是在浮动元素下方添加一个非浮动元素,就像图三。

(图三 在父容器底部添加一个非浮动元素)

代码这样写:

 代码如下复制代码

<div>

<div style="float:left;width:45%;"></div>

<div style="float:right;width:45%;"></div>

<div style="clear:both;"></div>

</div>

这样一来,就没问题,能够正常显示了。原理是父容器现在必须考虑非浮动子元素的位置,而后者肯定出现在浮动元素下方,所以显示出来,父容器就把所有子元素都包括进去了。

这种方法比较简单,但是要在页面中增加冗余标签,违背了语义网的原则。那么,有没有不修改HTML代码的方法呢?

4. 解决方法二:浮动的父容器

另一种思路是,索性将父容器也改成浮动定位,这样它就可以带着子元素一起浮动了。

代码这样写:

 代码如下复制代码

<div style="float:left;">

<div style="float:left;width:45%;"></div>

<div style="float:right;width:45%;"></div>

</div>

这种方法不用修改HTML代码,但是缺点在于父容器变成浮动以后,会影响到后面元素的定位,而且有时候,父容器是定位死的,无法变成浮动。

5. 解决方法三:浮动元素的自动clearing

它的思路是让父容器变得可以自动"清理"(clearing)子元素的浮动,从而能够识别出浮动子元素的位置,不会出现显示上的差错。

要做到这点,只要为父容器加上一条"overflow: hidden"的CSS语句就行了。代码这样写:

 代码如下复制代码

<div style="overflow: hidden;">

<div style="float:left;width:45%;"></div>

<div style="float:right;width:45%;"></div>

</div>

这种方法的缺点主要有二个,一个是IE 6不支持,另一个是一旦子元素的大小超过父容器的大小,就会出显示问题。

6. 解决方法四

还是回到方法一,能不能通过CSS语句添加子元素呢,这样就不用修改HTML代码了?

回答是可以的,我们知道CSS语句中有一个:after伪选择符,就可以在父容器的尾部自动创建一个子元素,这正好符合我们的需要。

下面的代码参照了lifesinger的写法:

 代码如下复制代码

.clearfix:after {
content: "020";
display: block;
height: 0;
clear: both;
}

其中的"clearfix"是父容器的class名称,"content:"020";"是在父容器的结尾处放一个空白字符,"height: 0;"是让这个这个空白字符不显示出来,"display: block; clear: both;"是确保这个空白字符是非浮动的独立区块。

但是,:after选择符IE 6不支持,也就是说上面的这段代码在IE 6中无效,这怎么办?

我们添加一条IE 6的独有命令"zoom:1;"就行了,这条命令的作用是激活父元素的"hasLayout"属性,让父元素拥有自己的布局。(它的具体含义,请参见本文的附录。)IE 6会读取这条命令,其他浏览器则会直接忽略它。

7. 最后的生产代码

 代码如下复制代码

.clearfix:after {
content: "020";
display: block;
height: 0;
clear: both;
}

.clearfix {
zoom: 1;
}

更新 2011.04.21

Nicolas Gallagher贴出了更通用的生产代码。

 代码如下复制代码


.cf:before,
.cf:after {
  content:"";
  display:block;
}

.cf:after {
  clear:both;
}


.cf {
  zoom:1;
}

[参考阅读]

* PPK: Clearing floats

* How To Clear Floats Without Structural Markup

* mezzoblue: Clearance

====================

附录 什么是hasLayout

(以下内容摘自CSS Mastery一书的中译本《精通CSS 高级Web标准解决方案》第154页,人民邮电出版社,2007)

IE使用Layout概念来控制元素的尺寸和位置。如果一个元素有Layout,它就有自身的尺寸和位置;如果没有,它的尺寸和位置由最近的拥有布局的祖先元素控制。

在默认情况下,拥有Layout的元素包括:

 代码如下复制代码
<html>, <body>
<table>, <tr>, <th>, <td>
<img>
<hr>
<input>, <button>, <select>, <textarea>, <fieldset>, <legend>
<iframe>, <embed>, <object>, <applet>
<marquee>

(注意,<p>和<div>默认不拥有Layout。)


clear用法


clear属性值有四个clear:both|left|right|none;

作用:该属性的值指出了不允许有浮动对象的边。 
这个属性是用来控制float属性在文档流的物理位置的。

当属性设置float(浮动)时,他所在的物理位置已经脱离文档流了,但是大多时候我们希望文档流能识别float(浮动),或者是希望float(浮动)后面的元素不被float(浮动)所影响,这个时候我们就需要用clear:both;来清除。

clear:left;表示该元素左边不存在浮动元素;
clear:right;表示该元素右边不存在浮动元素;

clear:both;表示该元素两边都不存浮动元素;

clear:none表示两边允许有浮动元素。




Stable-Baselines3性能优化:多环境训练对比指南(DummyVecEnv vs SubprocVecEnv) 本文深入对比了Stable-Baselines3中DummyVecEnv与SubprocVecEnv两种向量化环境的性能差异与应用场景。DummyVecEnv适用于轻量级、步进快的环境,调试友好且开销低;而SubprocVecEnv则通过真正的多进程并行,能显著加速计算密集型环境的训练。文章通过基准测试与决策树,指导开发者根据环境计算成本、CPU核心数等关键因素做出最优选择,以实现训练效率最大化。 阅读详情

相关推荐

超聚变安装银河麒麟服务器系统ky10-server-x86

超聚变-通过BMC口进服务器管理界面如下图为BMC管理口:默认BMC口IP:https://192.168.2.100l浏览器打开网页,输入用户名和密码登陆后,如下图红框处,选择“启动虚拟控制台”——选择“HTML集成远程控制台”系统银河麒麟服务器系统ky10 server x86选择镜像文件X86架构我们一般选择下图2212版本选择启动方式:光驱重启出现安装图形化界面选装安装系统的磁盘系统安装盘选完后如下图,会置灰创建root密码开始安装系统首次进入,有协议界面。

zengliguang的专栏 5966

浮动元素容器的clearing问题[转]

这个问题应该是写过页面的人都遇到过,本人也是经常遇到,经常google,然后忘记....主要还是因为自己写页面的时候不多吧.. 反正新开的blog也还比较空, 索性就转到空间存档,方便自己查找 下文出自阮老师的一篇博客 网页设计时,我经常遇到下面这个问题,一直不知道怎么解决。 今天,总算全部理解了,一定要写下来。 1. 问题的由来 有这样一种情形:在一个容器(con...

weixin_30746117的博客 145

BK7238(XH-WB3S)固件烧录实战:从AT固件选择到稳定下载全解析

本文详细解析了BK7238(XH-WB3S)模组固件烧录的全过程,从AT固件版本选择到稳定下载的实战技巧。重点介绍了烧录前的准备工作、硬件连接的正确姿势、烧录软件的实战技巧以及疑难问题排查指南,帮助开发者高效完成BK7238模组的固件烧录。

weixin_29159441的博客 253

CSS知识点汇总(一)--盒模型&清除浮动&隐藏元素的方法等

两种盒子模型:IE盒模型(border-box)、W3C标准盒模型(content-box)盒模型: 分为内容(content)、填充(padding)、边界(margin)、 边框(border)四个部分;IE盒模型和W3C标准盒模型的区别:(1)W3C标准盒模型:属性width,height只包含内容content,不包含border和padding(2)IE盒模型:属性width,height包含content、border和padding,指的是content。

qq_42445025的博客 288

手把手教你用CMake和MinGW64编译libuvc:静态链接与动态链接的选择

本文详细指导如何在Windows平台上使用CMake和MinGW64编译libuvc库,并深入探讨静态链接与动态链接的选择策略。通过对比两种链接方式在部署复杂度、内存占用和版本管理等方面的差异,帮助开发者根据项目需求做出最优决策,实现高效的USB摄像头开发。

weixin_29171087的博客 255

C++坦克大战源代码

【代码】C++坦克大战源代码。

强国豪,林中霖 2610

清除浮动的五种常用的方法( 解决方法 详细解释 原理 产生原因 )

清除浮动的五种常用的方法( 解决方法 详细解释 原理 产生原因 )

zhp19513507633的博客 7302

如何用matlab扫频法测考虑频率耦合的并网逆变器的序阻抗,如何实现?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 1193

CSS技巧(一):清除浮动

什么是CSS清除浮动? 在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动(float为left或right)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高度,使得内容溢出到容器外面而影响(甚至破坏)布局的现象。这个现象叫浮动溢出,为了防止这个现象的出现而进行的CSS处理,就叫CSS清除浮动。 引用W3C的例子,news容器没有包围浮动的元素。 ...

weixin_30915951的博客 186

VN5620以太网测试——DoIP配置

CANoe(CAN open environment)VN5620 :是一个紧凑而强大的接口,用于以太网网络的分析、仿真、测试和验证。VN5620 接口支持各种可能的应用。它适用于与其他总线系统、网络参与(例如在模拟和生成帧、测试中的负载和错误)的同步以太网监控。在2021年Vector公司的以太网接口卡VN5610和VN5640设备已经陆续停产,相应被VN5620和VN5650代替。参考文章了解DoIP协议——汽车以太网应用介绍。

诊断协议那些事儿's blog 3014

huggingface使用git上传model或者Dataset到HF,当然也可以上传代码,以及大文件,很哇塞!!!

huggingface使用git上传model或者Dataset到HF,当然也可以上传代码,以及大文件,很哇塞!!! 第一次使用时,需要使用设置系统全局的huggingface token,这。点击huggingface首页右上角的头像 → settings → access tokens,创建一个write权限的token,名字可以随便取。

拥抱具身智能,昇腾Ascend C 3106

CSS技巧:清除浮动

什么是CSS清除浮动? 在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动(float为left或right)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高度,使得内容溢出到容器外面而影响(甚至破坏)布局的现象。这个现象叫浮动溢出,为了防止这个现象的出现而进行的CSS处理,就叫CSS清除浮动。 引用W3C的例子,news容器没有包围浮动的元素。 .news { background-color: gray; border: solid 1px black;

jieyongyuan18sui的博客 189

一文读懂AI协同办公领域发展和趋势

协同办公,又称OA,是指企业内部或外部各类人员之间利用信息技术来进行协作工作的一种形式。这种协作工作既可以由直接员工进行,也可以来自外部的咨询机构、合作伙伴或联营企业。协同办公的优势在于可以对资源进行有效管理和配置,各部门之间可以建立良好的协作关系,跨部门更好地实现资源共享。

女王の专属领地 2363

CSS —— 清除浮动的方法及其原理理解

一、为什么要清除浮动 浮动会引起父容器塌陷,导致页面布局出错等问题。 例子: <body> <div class="parent_Div"> <div class="float_Div">float left float left float left float left.....</div> <div class=...

ZhaoYLi 的编程学习笔记 1328

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

CSS-清除浮动

什么是CSS清除浮动? 在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动(float为left或right)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高度,使得内容溢出到容器外面而影响(甚至破坏)布局的现象。这个现象叫浮动溢出,为了防止这个现象的出现而进行的CSS处理,就叫CSS清除浮动。 引用W3C的例子,news容器没有包围浮动的元素。 .news { background-color: gray; border: solid 1px bl..

qin23333的博客 205

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【CSS】clear清除浮动

clear清除浮动1、作用:   规定元素的某一侧不允许存在浮动元素 2、值: 3、应用:   清除其他浮动元素对其产生的影响 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <t...

derud7050的博客 253

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

CSS清除浮动

CSS清除浮动 方法一:使用带clear属性的空元素 在浮动元素后使用一个空元素如< div class=“clear”></ div>,并在CSS中赋予.clear{clear:both;}属性即可清理浮动。亦可使用< br class="clear" />或< hr class="clear" />来进行清理。 <div class="ne...

low666的博客 494

浮动与清除浮动

浮动float:left/right/none,清除浮动,使用clean属性和使用伪元素

2502_90771047的博客 403

清除浮动方法总结

引用:https://segmentfault.com/a/1190000004865198 清除浮动 clear类方法 1.使用带clear属性的空元素 在浮动元素后使用一个空元素,并在CSS中赋予.clear{clear:both;}属性即可清理浮动。亦可使用<br class="clear" />或<hr class="clear" />来进行清理。 ...

weixin_34150830的博客 94

CSS浮动清除

今天在牛客网刷题的时候看到有关浮动清除的问题,在之前的开发中虽然也遇到并解决过类似的情况但是没有做过系统的总结。在segmentfault看到一篇不错的文章来讲解总结这个常见的问题,转载过来学习一下。什么是CSS清除浮动?在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动(float为left或right)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高度...

Toby的博客 286

HTML5第六课时,float浮动影响的消除,clear

html> html> head lang="en"> meta charset="UTF-8"> title>float浮动影响的清除,cleartitle> style> #header{ height: 100px; background-color: #ff7300; }

甲戌天火的博客 738

关于css中的浮动的用法

CSS浮动是一种定位方法,它可以使元素脱离常规的文档流,并沿着容器的左侧或右侧对齐。浮动元素可以与其他浮动元素并排显示,直到没有足够的空间,然后才会换行。

2301_76989410的博客 383

css清除浮动,自动撑大外层盒子

&lt;!DOCTYPE html&gt;&lt;html lang="zh-cn"&gt;&lt;head&gt;&lt;meta charset="utf-8" /&gt;&lt;title&gt;css清除浮动,自动撑大外层盒子&lt;/title&gt;&lt;style&gt;.box{width:960px; margin: 0 auto; ba

SamPHP的博客 1319
上一篇: 通过命令行快速启动Apache&nbsp;Tomcat
下一篇: wamp和lamp术语解释
普通网友
博客等级 码龄16年 90粉丝 1232原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值