清除浮动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:left;width:400px;">这个是第2列,</p> <p>这个是第3列。</p>
[Ctrl+A 全部选择进行拷贝 提示:可先修改部分代码,再点击运行]

如果不用清除浮动,那么第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:both;">这个是第3列。</p>
[Ctrl+A 全部选择进行拷贝 提示:可先修改部分代码,再点击运行]

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

通常,我们往往会将“清除浮动”单独定义一个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>
[Ctrl+A 全部选择进行拷贝 提示:可先修改部分代码,再点击运行]

该页面测试在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>
[Ctrl+A 全部选择进行拷贝 提示:可先修改部分代码,再点击运行]

对于因多加的<div class="clear"></div>标签会引起IE和FF高度变化,通过如下方法解决:


.clear {
clear: both;
height:1px;
margin-top:-1px;
overflow:hidden;
}

 

<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;height:1px;margin-top:-1px;overflow:hidden;} </style> <div id="main"> <div id="sidebar">第一段内容 第一段内容 第一段内容</div> <div id="container">第二段内容 第二段内容 第二段内容</div> <div class="clear"></div> </div> <p>第三段内容</p>
 

时间: 2024-09-08 20:14:26

清除浮动clear:both的应用详解的相关文章

css清除浮动clearfix:after的用法详解

如果外部有一个div容器,其内部div容器设置了float样式,则外部的容器div因为内部没有clear,导致不能撑开. 解决方法:   CSS代码:   复制代码 代码如下: .clearfix:after { content: "." ; display: block ; height: 0 ; clear: both ; visibility: hidden ; } .clearfix{ display: inline-block; } /* Hides from IE-mac

css别忘记清除浮动clear:both_经验交流

用空标签清除 .clr {clear: both;} <div id="layout">     <div id="left">Left</div>     <div id="right">Right</div>     <p class="clr"></p> </div>使用 overflow 属性 #layout {overfl

使用PHP遍历文件目录与清除目录中文件的实现详解_php技巧

今天无聊中练习了一下PHP遍历文件目录的程序,编写了以下两个程序,不过质量不是很好,轻拍~~~1.清除PHP缓存文件 复制代码 代码如下: <?php  function read_dir($dir,$file)  {      $a =strpos($file,".php");      if($a>0)       {          unlink($dir . $file);          echo "delete $dir$file <br&g

CSS清除浮动和定位

1.原来在一行中的两个块,会因为浏览器窗口的大小改变而改变其原来的位置(变成多行),浏览器窗口宽度不够容纳解决方法:加个父div,并且设置宽度 .father {width:500px;height:300px;}<div class="father">   <div class="left">左</div>   <div class="right">右</div></div>

css中清除浮动的例子

左图右文形式,这是手机页面经常碰到的一种情况,记得第一次写的时候,好纠结,因为不会,排版的时候,老是写不出和效果图一样的效果,最近发现,原来是使用了float元素,导致这个页面最外层的标签撑不起来(手机页面一般不将宽度和高度定死),这个时候,突然想起可以清除浮动  clear:both; 下面放出代码 css: .cell-content {display: block;margin-bottom: 10px;background: #eee;} .cell-content:hover,.cel

彻底理解浮动float CSS浮动详解 清除浮动的方法

原文:彻底理解浮动float CSS浮动详解 清除浮动的方法  我们把网页的常用的布局格式分为以下三种:   1.标准流.  所谓的标准流就是,行内元素自己单独一行,而块级元素是上下显示的. 以前我们学习的都是标准流.   注意:标准流使我们网页布局中最稳定的一种结构       2. 浮动流  使我们学习的脱离标准流的第一种方式.会影响我们标准流的排列.所以,我们布局的时候,能用标准流做的,就不用浮动做.       3. 定位流   定位流也是脱离标准流的一种模式.它完全脱离标准流,不会对标

css利用clearfix方法清除浮动详解

一,什么是.clearfix 你只要到Google或者Baidu随便一搜"css清除浮动",就会发现很多网站都讲到"盒子清除内部浮动时可以用到.clearfix".  代码如下 复制代码 .clearfix:after {     content: " ";     display: block;     clear: both;     height: 0; } .clearfix {     zoom: 1; } <div class=

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

一.理解clear: left/clear: right 当想到clear: left的时候,自然会认为是"清除左浮动",clear: right是清除右浮动. 其实现在想想,这样的理解与表示是不严谨的欠考虑的. 一般,现在中文圈流传的表述是: clear语法: clear : none | left | right | both 取值: none : 默认值.允许两边都可以有浮动对象 left : 不允许左边有浮动对象 right : 不允许右边有浮动对象 both : 不允许有浮动

.clear 万能清除浮动(clearfix:after)

有时候我们需要清楚浮动的一些操作,这里介绍的是clearfix:after的实例代码,需要的朋友可以参考下   一般情况下:   复制代码 代码如下: html body div.clear, html body span.clear { background: none; border: 0; clear: both; display: block; float: none; font-size: 0; margin: 0; padding: 0; overflow: hidden; visi