`

CSS中 clear.both 的理解

阅读更多

在CSS中我们会经常要用到“清除浮动”Clear,比较典型的就是clear:both;

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

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

比如:
<p style="float:left;width:200px;">这个是第1列,</p>
<p style="float:right;width:400px;">这个是第2列,</p>
<p>这个是第3列。</p>

如果不用清除浮动,那么第3列文字就会和第1、2列文字在一起 ,所以我们在第3个这列加一个清除浮动 clear:both;
<p style="float:left;width:200px;">这个是第1列,</p>
<p style="float:left;width:400px;">这个是第2列,</p>
<p style="clear:left;">这个是第3列。</p>

通常,我们往往会将“清除浮动”单独定义一个CSS样式,如:
.clear {
     clear: both;
}
然后使用<div class="clear"></div>来专门进行“清除浮动”。

不过也有不赞同意见是,<div class="clear"></div>可以不写,直接在下层清除就可以了。
比如本来好好的


<p style="float:left;width:200px;">这个是第1列,</p>
<p style="float:left;width:400px;">这个是第2列,</p>
<p style="clear:both;">这个是第3列。</p>


非要整成


<p style="float:left;width:200px;">这个是第1列,</p>
<p style="float:left;width:400px;">这个是第2列,</p>
<div class="clear"></div>
<p>这个是第3列。</p>


这点看来,<div class="clear"></div>确实不需要写。

不过很显然,我们在网页设计时还有一种很普遍的情况:
<style type="text/css">
#main {background-color: #3399CC;width: 600px;padding: 20px;}
#sidebar {background-color: #FF6600;    float: left;width: 130px;}
#container {float: right;width: 420px;background-color: #FFFF33;}
</style>
<div id="main">
<div id="sidebar">第一段内容 第一段内容 第一段内容</div>
<div id="container">第二段内容 第二段内容 第二段内容</div>
</div>
<p style="clear:both;">第三段内容</p>

该页面测试在IE下效果正合所要:蓝色块内部有红色和黄色两个色块内容,同时在蓝色块以下是第三段文本。

不过FF的效果可不是这样的。我们不能单单想在下一层清除就能完成我们的工作,我们必须在浮动元素所在标签闭合之前及时进行“清除”。
<style type="text/css">
#main {background-color: #3399CC;width: 600px;padding: 20px;}
#sidebar {background-color: #FF6600;    float: left;width: 130px;}
#container {float: right;width: 420px;background-color: #FFFF33;}
.clear {clear: both;}
</style>
<div id="main">
<div id="sidebar">第一段内容 第一段内容 第一段内容</div>
<div id="container">第二段内容 第二段内容 第二段内容</div>
<div class="clear"></div>
</div>
<p>第三段内容</p>

对于因多加的<div class="clear"></div>标签会引起IE和FF高度变化,通过如下方法解决:
.clear {
     clear: both;
     height:1px;
     margin-top:-1px;
     overflow:hidden;
}


转自: http://www.cnbruce.com/BLOG/showlog.asp?log_id=1281

分享到:
评论
2 楼 taga 2011-08-16  
CSS手册上是这样说明的:该属性的值指出了不允许有浮动对象的边。这个属性是用来控制float属性在文档流的物理位置的

当属性设置float(浮动)时,其所在的物理位置已经脱离文档流

实在搞不懂加粗的是什么意思, 看到N多人应用, 我就不信他们懂了, 不知道什么鸟翻译, 害人不浅
1 楼 wenjinglian 2009-09-03  
谢谢,一个标签学问就么多,哈哈

相关推荐

    深度理解CSS clear:both的使用

    clear:both用来清除浮动这是一直来的印象,但是自己很少会用这个,理解其实也不太正确,今天查查了资料,记录一下 float的脱离文档流 float的原始作用是为了实现文字环绕的作用,可以理解为部分脱离文档流。 CSS中说...

    css别忘记清除浮动clear:both

    总结下清除浮动的一般解决方案,做网页时要注意

    CSS在图片中的应用

    clear:both; height:66px; margin:0 auto; font-size:12px; } #face li { list-style:none; padding:0 0 0 25px; margin:0; width:57px; height:26px; line-height:26px; float:left; background: url...

    详解CSS中clear:left/right的用法

    一、理解clear: left/clear: right 当想到clear: left的时候,自然会认为是“清除左浮动”,clear: right是清除右浮动。 其实现在想想,这样的理解与表示是不严谨的欠考虑的。 一般,现在中文圈流传的表述是:  ...

    CSS 浮动清理,不使用 clear:both标签

    CSS:浮动清理,不使用 clear:both标签 在进行浮动布局时,大多数人都深知,在必要的地方进行浮动清理:&lt;div xss=removed&gt;&lt;/div&gt;。

    CSS的clear属性清除浮动的基本用法示例

    什么是CSS清除浮动? 网络上流行的说法是:在非IE浏览器(如Firefox)下,当容器的高度(height)为auto,且... .clear-float {clear:both;}  clear 属性是 CSS 1 就提供的用来清除浮动的样式,设置了 clear 属性的元

    浅谈CSS中的clear清除浮动

    2、一开始在CSS中clear浮动是默认both,也就是说一开始不能有浮动的。 3、使用的案例:假设我清除第三个DIV的浮动 XML/HTML Code复制内容到剪贴板 &lt;style type=text/css&gt;  div{ border:1px solid red;...

    CSS——float属性及Clear:both备忘笔记

    CSS的float属性,作用就是改变块元素对象的默认显示方式,HTML标签设置了float属性之后,它将不再独自占据一行,从而可以实现多个元素同处一行的效果,所以需要在样式定义的后面进行清除浮动

    CSS样式文件格式化工具

    很多工具生成的Css 都是多行的,很占用空间,于是写了这个格式化工具,将一个样式格式化为一行。 如有不足之处 敬请斧正! 例如: .UserLogin_7{ width:213px; height:45px; clear:both; margin-left:0px; ...

    jQuery图片裁剪插件Jcrop.js.zip

    clear:both;"&gt; &lt;br&gt; &lt;br&gt;  &lt;/body&gt; &lt;/html&gt; Jcrop.js实现的一款功能强大的jQuery图片裁剪插件,可以结合后端程序快速的实现图像裁剪的功能,右侧有3个图像缩略图尺寸可选。

    CSS中float和clear各是什么意思有哪些区别

    禁止右侧出现浮动元素,如果右侧存在浮动元素,则右侧的浮动元素将在当前元素下面另起一行呈现.clear:both; 禁止左右两侧出现浮动元素,当前元素将排斥浮动元素独占一行呈现.上面提到的行也可能是多行组成的一个块,不...

    CSS清除浮动的方法详解

    在浮动元素后使用一个空元素如&lt;div class=clear&gt;,并在CSS中赋予.clear{clear:both;}属性即可清理浮动。亦可使用&lt;br class=clear&gt;或&lt;hr class=clear&gt;来进行清理。 CSS Code复制内容到剪贴板 .news { background-...

    清除浮动clear:both的应用详解

    在CSS中我们会经常要用到“清除浮动”Clear,比较典型的就是clear:both;CSS手册上是这样说明的:该属性的值指出了不允许有浮动对象的边。这个属性是用来控制float属性在文档流的物理位置的。 当属性设置float(浮动...

    HTML5 and CSS3 Seventh Edition Visual QuickStart Guide.Dec.2011

    Authors Elizabeth Castro and Bruce Hyslop use clear instructions, friendly prose, and real-world code samples to teach you HTML and CSS from the ground up. Over the course of 21 chapters you will ...

    HTML, XHTML, and CSS All-in-one Desk Reference For Dummies

    Want to build a killer Web site? Want to make it easy... All you need is a text editor and the clear, step–by–step guidance you′ll find in HTML, XHTML, and CSS All–In–One Desk Reference For Dummies.

    CSS清楚浮动clear:both的实例代码

    今天给大家讲一下清楚浮动,在讲清除浮动前,需要了解什么是浮动,这里我就不给你大家详细介绍浮动了。 浮动也就是脱离文档流,脱离文档流了,那父级的宽高就不能被子集撑开,所以我们就需要清楚浮动,废话不多说,...

    CSS控制html文本溢出

    &lt;title&gt;CSS控制文本溢出_网页特效_javascript特效_css特效-... clear: both"&gt; 本特效由&lt;a href="http://www.viewcss.com" target="_blank"&gt;ViewCss网页特效网收集和整理,请支持原创精神,转载请注明出处! &lt;/body&gt;

    common.css

    css样式,项目中用到的,记录在此 页面设计遇到的一些问题: 1、div悬浮感、div浮动(变成行内块)、清除浮动 样式: box-shadow: 2px 2px 5px #bbb;  float: left; clear: both; 2、外边距自动...

    常用的HTML+CSS标签480个(带中文解释说明)

    浏览器兼容 leftmargin="0" topmargin="0" ...clear:both;overflow: auto;&lt;父标签&gt; div撑起来 -moz-background-size:cover; -webkit-background-size:cover; -o-background-size:cover; background-size:cover;

Global site tag (gtag.js) - Google Analytics