CSS中正确理解clear:both

article/2025/10/19 15:09:37

原文地址:http://blog.sina.com.cn/s/blog_709475a10100wkdj.html

要注意以下几点: 
1、 浮动元素会被自动设置成块级元素,相当于给元素设置了display:block(块级元素能设置宽和高,而行内元素则不可以)。 
2、 浮动元素后边的非浮动元素显示问题。 
3、 多个浮动方向一致的元素使用流式排列,此时要注意浮动元素的高度。 
4、子元素全为浮动元素的元素高度自适应问题。 

以下详细分析四个问题。 

一、浮动元素自动变块级元素 
首先说说块级元素和行内元素区别,简单的来说,块级元素独占一行,可以设置宽高以及边距,行内元素不会独占一行,设置宽高行距等不会起效。常见的块级元素有:h1~h6、p、div、ul、table,常见的行内元素有:span、a、input、select等。 

示例代码: 

复制代码
代码如下:

<div style="height: 200px; width: 200px;"> 
<span style="float: left; width: 150px; height: 150px; margin: 5px; padding: 5px; 
border: solid 1px red; background-color: Olive;">浮动元素span</span> 
</div> 
<div style="height: 200px; width: 200px;"> 
<span style="width: 150px; height: 150px; margin: 5px; padding: 5px; border: solid 1px red; 
background-color: Olive;">浮动元素span</span> 
</div> 


效果如下: 
 
二、浮动元素后的非浮动元素问题 
浮动元素后边的元素若是非浮动行内元素且因为定位产生重叠时,行内元素边框、背景和内容都在该浮动元素“之上”显示,若是非浮动块级元素跟在浮动元素后边且在定位后产生重叠时,该块级元素边框和背景在该浮动元素“之下”显示,只有内容在浮动元素不在浮动元素“之下”显示。 
示例代码如下: 

复制代码
代码如下:

<div style="width: 600px; height: 500px; border: solid 1px blue; background-color: yellow;"> 
<div style="float: left; width: 250px; height: 250px; border: solid 1px Aqua; background-color: gray; 
margin: 10px 0 0 10px;"> 
浮动DIV</div> 
<div style="background-color: red; border: solid 1px green; width: 300px; height: 150px;"> 
跟在浮动元素后边的DIV</div> 
<span style="background-color: red; border: solid 1px green; margin: 0 0 0 -50px;"> 
跟在浮动元素后边的span</span> 
</div> 


效果图如下: 
 

从图中可以看出来,跟在浮动div后边的div背景以及边框被压在了底下,内容却没有,span整体都在浮动div之上显示。 

不过在ie6这个效果却很怪异,如图:


浮动元素没有压在非浮动div之上,反而把span压住了。
三、多个并列同方向浮动元素高度不一致问题 
多个同方向浮动元素若是高度不一致的话,很可能会得到意外的效果,跟你想要的布局差别很大。多个同方向浮动元素一般是按照流式布局,一行满了则自动换行,也就是类似于以下效果: 
 
但各个浮动元素高度不一致的话效果很可能出现下边的情况: 
 
很意外吧,主要排列到元素7的时候,一行已经显示不下了,所以要换行,但此处换行并不是从行头开始,而是从元素5那开始,因为元素5比元素6高很多导致。 
四、子元素全为浮动元素高度自适应问题 
由于元素浮动后脱离了文档流,所以父元素是无法根据元素来自适应的。解决此问题最常用的办法由两种,第一种就是在所有浮动元素后加: 
<div style="clear:both;height:0px;"></div> 
第二种办法,使用万能clear: 

复制代码
代码如下:

.clearfix:after 

visibility: hidden; 
display: block; 
font-size: 0; 
content: "."; 
clear: both; 
height: 0; 

* html .clearfix 

zoom: 1; 

*:first-child + html .clearfix 

zoom: 1; 


然后在你需要自适应的元素上加上class=” clearfix”即可。详细请参考: 

你真的理解clear:both吗 
在开发中,从美工MM给你Html代码中,肯定能经常看”<div style="clear:both;"></div>”这样的代码,但是你真的能明白它是做什么用的吗? 
如: 

复制代码
代码如下:

<div style="border:2px solid red;"> 
<div style="float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div> 
<div style="clear:both;"></div> 
</div> 

你可以将此部分代码放到一个HTML页面看看效果,然后在去掉”<div style="clear:both;"></div>”看一下效果,就知道这句话的作用了。 
如图: 
(1)有clear:both的: 

 

你真的理解clear:both吗?

 

2)无clear:both

你真的理解clear:both吗?
这样看,应该就一目了然了:原来后边的Clear:both;其实就是利用清除浮动来把外层的div撑开,所以有时候,我们在将内部div都设置成浮动之后,就会发现,外层div的背景没有显示,原因就是外层的div没有撑开,太小,所以能看到的背景仅限于一条线。 

但这种办法就是最好了的吗? 
我这么说,当然答案就不是了。可以采用通过Hack实现: 

复制代码
代码如下:

<style> 
.clearfix:after{ 
visibility: hidden; 
display: block; 
font-size: 0; 
content: "."; 
clear: both; 
height: 0; 

* html .clearfix{zoom: 1;} 
*:first-child + html .clearfix{zoom: 1;} 
</style> 
<div class="clearfix" style="border: 2px solid red;"> 
<div style="float: left; width: 80px; height: 80px; border: 1px solid blue;"> 
TEST DIV</div> 
</div> 

看完解决办法,咱们来看里边的原理: 
(1)、首先是利用:after这个伪类来兼容FF、Chrome等支持标准的浏览器。 
:after伪类IE不支持,它用来和content属性一起使用设置在对象后的内容,例如: 
a:after{content:"(link)";} 
这个CSS将会让a标签内的文本后边加上link文本文字。 

(2)、利用“* html”这个只有IE6认识的选择符,设置缩放属性“zoom: 1;”实现兼容IE6。 
(3)、利用“*:first-child + html”这个只有IE7认识的选择符,设置缩放属性“zoom: 1;”实现兼容IE7。

http://chatgpt.dhexx.cn/article/8He8RN1E.shtml

相关文章

clear:both 的作用

如&#xff1a; <div style"border:2px solid red;"> <div style"float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div> <div style"clear:both;"></div> </div> 你可以将此部分代码…

CSS中clear:both的作用

clear:both意思就是清除浮动&#xff0c;例如我们设置了三个div如下&#xff1a; <div style"line-height: 30px;background-color: #EEEEEE;height: 100px;width: 50px;float: left;padding: 5px;">侧边栏<br>侧边栏 </div> <div style"…

css中clear:both属性的理解及用法

css中clear:both属性的作用是清除浮动&#xff0c;设置了浮动就会破坏文档流结构&#xff0c;影响后边的布局&#xff0c;此时在设置清除浮动便可解决这一问题&#xff0c;可以认为&#xff0c;设置了clear:both的当前元素会把前边元素中设有浮动属性的元素&#xff0c;当做没设…

CSS规则clear: both有什么作用?

clear属性用来指定的浮动元件不允许浮动该哪一侧&#xff1b;它设置或返回元素相对于浮动对象的位置。而"clear: both"用于设置在左右两侧均不允许浮动元素。 原文地址&#xff1a;CSS规则"clear: both"有什么作用&#xff1f; 当不需要与指定元素相关的任…

clear:both清除浮动的基本原理

clear属性 关于clear属性&#xff0c;官方文档是这样描述的&#xff1a; 其中clear: both的意思是要求框的顶边框边低于在源文档中之前生成的任何浮动框的底外边距边。也就是说可以清除之前所有浮动框所带来的影响。 利用有clear:both属性的空的块元素撑开父元素的盒子&…

Diffusion Model

DDPM codebase 为 https://github.com/lucidrains/denoising-diffusion-pytorch 训练和推理流程如下&#xff1a; Train diffusion() ---> forward() ---> self.p_losses() 完成一个扩散阶段&#xff08;包括前向计算和 BP&#xff09;&#xff0c;每次前向和 BP 中用…

使用Batch Normalization解决VAE训练中的后验坍塌(posterior collapse)问题

前言 在训练VAE模型时&#xff0c;当我们使用过于过于强大的decoder时&#xff0c;尤其是自回归式的decoder比如LSTM时&#xff0c;存在一个非常大的问题就是&#xff0c;decoder倾向于不从latent variable z中学习&#xff0c;而是独立地重构数据&#xff0c;这个时候&#x…

【论文模型讲解】Learning to Select Knowledge for Response Generation in Dialog Systems(PostKS模型)

文章目录 前言背景Posterior Knowledge Selection 模型&#xff08;PostKS&#xff09;1. 对话编码器&知识编码器(Utterance Encoder&Knowledge Encoder)2. 知识管理器(Knowledge Manager)3. 解码器4. 损失函数 Q & A1. 先验知识模块相关问题 前言 论文网址&#…

引导方法深度补全系列—晚期融合模型—1—《Dense depth posterior (ddp) from single image and sparse range》文章细读

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 创新点 实施细节 对比sparse_RGBD tips 方法详解 损失函数 优缺点 总结 创新点 1.提出了基于贝叶斯理论的两步法网络做深度补全 文章概述 提出了两步法&#xff0c;实际…

扩散模型(Diffusion model)代码详细解读

扩散模型代码详细解读 代码地址&#xff1a;denoising-diffusion-pytorch/denoising_diffusion_pytorch.py at main lucidrains/denoising-diffusion-pytorch (github.com) 前向过程和后向过程的代码都在GaussianDiffusion​这个类中。​ 有问题可以一起讨论&#xff01; …

DIFFUSION POSTERIOR SAMPLING FOR GENERALNOISY INVERSE PROBLEMS (Paper reading)

DIFFUSION POSTERIOR SAMPLING FOR GENERALNOISY INVERSE PROBLEMS Hyungjin Chung, Kim Jae Chul Graduate School of AI, ICLR 2023 spotlight, Cited:10, Code, Paper. 目录子 DIFFUSION POSTERIOR SAMPLING FOR GENERALNOISY INVERSE PROBLEMS1. 前言2. 整体思想3. 方法实…

Exploring and Distilling Posterior and Prior Knowledge for Radiology Report Generation

Exploring and Distilling Posterior and Prior Knowledge for Radiology Report Generation&#xff08;探索和提炼后验和先验知识的放射学报告生成&#xff09; 先验与后验目前的放射学报告生成的局限性Paper的贡献模型详解模型输入模型主要部分 先验与后验 在阅读这篇Paper…

国际会议poster: 海报制作流程 格式介绍

1 流程 word制作&#xff0c; 转pdf, 打印 2 模板 UCLhttps://wenku.baidu.com/view/034bcb7e4a7302768f99392a.html 3 CYBER2019格式要求 海报尺寸:A1尺寸23.4英寸(59.4厘米)宽&#xff0c;33.1英寸(84.1厘米)高。 请注意&#xff0c;以A4尺寸列印已递交的整张纸作为海报是不可…

概率基础 · 联合概率 边缘概率 prior posterior likelihood

概率基础 联合概率 边缘概率 prior posterior likelihood 联合概率 (Joint Probability)边缘概率&#xff08;margin probability&#xff09;贝叶斯定理&#xff08;Bayes Theorem&#xff09;prior&#xff0c;posterior&#xff0c;likelihood&#xff1a;概率与似然的区别…

Stochastic Image Denoising By Sampling from the Posterior Distribution (Paper reading)

Stochastic Image Denoising By Sampling from the Posterior Distribution (Paper reading) Bahjat Kawar, Haifa(Israel), ICCV Workshop2021, Cited:22, Code:无, Paper. 目录子 Stochastic Image Denoising By Sampling from the Posterior Distribution (Paper reading)1…

GAN论文精读 P2GAN: Posterior Promoted GAN 用鉴别器产生的后验分布来提升生成器

《Posterior Promoted GAN with Distribution Discriminator for Unsupervised Image Synthesis》是大连理工学者发表的文章&#xff0c;被2021年CVPR收录。 文章地址&#xff1a;https://ieeexplore.ieee.org/document/9578672 本篇文章是阅读这篇论文的精读笔记。 一、原文…

先验、后验与似然

在学习SLAM 14讲第六章时&#xff0c;看到三个概念&#xff0c;有些不太了解&#xff0c;查阅资料后有了一些自己的理解。 三个概念存在于贝叶斯公式中 表示先验概率Prior&#xff0c;表示后验概率posterior&#xff0c;表示似然likelihood 上式可以写为 下面分别对三个概念进…

Prior 、Posterior 和 Likelihood 的理解与几种表达方式

Prior 、Posterior 和 Likelihood 的理解与几种表达方式 &#xff08;下载图片可以看大图。&#xff09;

Windows作为NTP同步时间的服务器时的设置

1.先关闭Windows系统自带的防火墙; 2. 在桌面上右击“计算机”&#xff0c; 选择“管理”&#xff0c; 然后选择“服务”。 具体如图所示 2. 选中“Windows Time”&#xff0c;设置为开启&#xff0c;这样就可以将“Windows Time”这一个服务打开。 3. “开始”--》“运…

NTP时钟服务器推荐-国内时间服务器顶尖设备

电子钟时间服务器在物联网应用中起到了关键的作用&#xff0c;它能够为各种智能设备提供准确的时间参考&#xff0c;确保设备之间的协同工作和数据的准确传输。无论是智能家居、智能工厂还是智慧城市&#xff0c;电子钟时间服务器都是不可或缺的一部分。 一、产品卖点 时间服…