`

清除浮动的几种方法(暂时总结出7种)

 
阅读更多

写给对CSS感兴趣的朋友:

这二天被很多朋友再次问到 清浮动 的方法,所以在这里写一下。

浮动是一个有意思(你也可以说它很麻烦)的CSS属性,任何元素设置了浮动,层级就提高了,会影响它后面没设置浮动的元素,这些倒霉的被影响者会跑到浮动层的下面去(当然IE6、IE7除外),代码看起来是这样:

<div style="width: 100px; height: 100px; border: 1px solid #333; float: left;"></div>

<div style="width: 120px; height: 140px; background: #eee;"></div>复制代码


效果:




因为设置了浮动的元素会提高层级,所以如果一个平淡无奇的父级元素(没有设置浮动或别的提高层级的属性)居然包住了一个浮动的家伙,并且这个父级还没有设置高,那它就悲催了,因为父级没法包住它的子级浮动元素(当然IE6、IE7又除外):


<div style="width: 160px; border: 1px solid #333; padding: 10px;">

        <div style="width: 120px; height: 140px; background: #eee; float: left;"></div>

</div>复制代码


如图:




那怎么样才能让父级包住浮动层呢?

下面是我列举的一些方法,如有大家还有其他的办法,欢迎补充:

-------------------------------------------------------------------

1. 在浮动层下,设置空DIV,代码如下:

<div style="width: 160px; border: 1px solid #333; padding: 10px;">
        <div style="width: 120px; height: 140px; background: #eee; float: left;"></div>        
        <div style="clear: both; height: 0; font-size: 1px;"></div>
</div>复制代码


说明:
clear: both;可以让元素不受到浮动层影响,排到浮动层的底下,
而父级可以包住最底下这个空DIV,这样看起来,它似乎也就包住那个浮动层了,
其实是障眼法哈~

缺点:IE6下会多出1像素来,并且设置了无语义的空DIV;

-------------------------------------------------------------------


2. 在父级设置:overflow: hidden;

<div style="width: 160px; border: 1px solid #333; padding: 10px; overflow: hidden;">
        <div style="width: 120px; height: 140px; background: #eee; float: left;"></div>
</div>复制代码


说明:overflow: hidden; 用它是为了提高父级的层级,层级提高了,自然能包住子级浮动元素了。

缺点:要是父级里面有什么元素居然飘到父级以外的地方,那就悲剧了,例如很多JS的提示层效果,

就不能用 overflow: hidden;

-------------------------------------------------------------------


3. 在父级设置:float

<div style="width: 160px; border: 1px solid #333; padding: 10px; float: left;">
        <div style="width: 120px; height: 140px; background: #eee; float: left;"></div>
</div>复制代码


说明:父级包不住浮动层,因为层级不够,那父级也设置float好喽

缺点:父级如果也有父级,也要设置浮动,那用这种方法,一路浮动到body那儿才算完事儿~~呃。。此方法本身就很滑稽

-------------------------------------------------------------------


4. 在父级设置:display: inline-block;

<div style="width: 160px; border: 1px solid #333; padding: 10px; display: inline-block;">
        <div style="width: 120px; height: 140px; background: #eee; float: left;"></div>
</div>复制代码


说明:inline-block; 是一个不兼容的属性,但用在这里只是为了提高父级层级,
如此一来,可以完全忽略它的不兼容性哈~

缺点:设置不了元素居中:margin-left: auto; margin-right: auto;
你可以在不需要居中的元素上使用这方法哈~

-------------------------------------------------------------------


5. 父级如果是绝对定位:position: absolute;

<div style="width: 160px; border: 1px solid #333; padding: 10px; position: absolute;">
        <div style="width: 120px; height: 140px; background: #eee; float: left;"></div>
</div>复制代码


说明:要说层级,那绝对定位必定是老大,在绝对定位眼中,小小的浮动也居然敢称层级??

缺点:position: absolute;会影响布局,它是相对父级的块元素为参照物进行定位,
完全不按文档流的方式走,呵呵,所以如果你要是在绝对定位的元素里设置浮动,那就尽情设置吧,

不必理会任何浮动神马的,因为在绝对定位下,浮动啥的,真的是浮云了~

-------------------------------------------------------------------


6. 给浮动层下设置:<br clear="all" />

<div style="width: 160px; border: 1px solid #333; padding: 10px;">
        <div style="width: 120px; height: 140px; background: #eee; float: left;"></div>        
        <br clear="all" />
</div>复制代码


说明:短小精炼的一行代码,很有效哈,对此代码不了解?
看看这里吧:
http://www.blueidea.com/tech/web/2007/4576.asp

-------------------------------------------------------------------


7. 给父级加上这行吧:
.clear:after { content: '\20'; clear: both; display: block; }

<style>
.clear:after { content: '\20'; clear: both; display: block; }
</style>

<div style="width: 160px; border: 1px solid #333; padding: 10px;" class="clear">
        <div style="width: 120px; height: 140px; background: #eee; float: left;"></div>
</div>复制代码


说明::after 是一个很好用的属性,有了它,可以往任何元素里插入字符串、空格啦,'.'之类的,
但可惜,IE6,IE7不认识:after,不过,又有什么关系呢?
反正IE6\IE7的父级能包住浮动层,所以不必管它们喽~
忘了解释了,先给浮动层底下插入一个空格(content: '\20';),再把这个空格转成块元素,并且清除浮动层的影响,让父级包住这个空格,也是障眼法哈~

-------------------------------------------------------------------

最后的结果都会是:




参与测试的浏览器列表:



补充常用清楚浮动方法
.clearfix:after {
        content: ".";
        display: block;
        clear: both;
        overflow:hiddden;
        visibility: hidden;
        height: 0;
}

.clearfix {
        display: inline-block;
}

* html .clearfix {
        height: 1%;
}

原文地址:http://hi.baidu.com/yansueh/item/4a72dceae2c45aeffa42bae7

分享到:
评论

相关推荐

    清除浮动的几种方法.md

    清除浮动的几种方法.md

    清除浮动的几种方法PPT学习教案.pptx

    清除浮动的几种方法 清除浮动是指在CSS中,浮动元素脱离文档流,导致父级元素无法自动获取到高度的问题。清除浮动是每一个web前台设计师必须掌握的机能。下面将介绍几种清除浮动的方法: 1. 对父级设置适合的CSS...

    css中3种清除浮动方法

    总结来说,CSS中的清除浮动有多种方法,包括传统的`clearfix`方法、使用`:clearfix`伪类和采用Flexbox布局。选择哪种方法取决于项目的需求,如兼容性、代码简洁性和布局复杂性等因素。理解这些方法的原理和应用场景...

    清除浮动和解决margin的塌陷的方法

    浮动的原理 ,介绍清除浮动几种方法。以及margin塌陷的产生和解决margin的塌陷的方法

    xhtml+css清除浮动的3种方法

    为了解决这个问题,我们需要掌握几种常见的清除浮动的方法。 #### 方法一:使用额外的标签进行清除 这种方法是最直观的一种方式,它通过在浮动元素后面添加一个额外的空标签(通常是`&lt;div&gt;`),并设置`clear:both`...

    HTML5 清除浮动

    清除浮动主要有以下几种方式: 1. 使用CSS的`clear`属性:我们可以给后续元素设置`clear:both`,这将强制该元素不与任何浮动元素相邻接。例如: ```css .clear-fix { clear: both; } ``` 然后在HTML中添加一...

    清理浮动的几种方法

    浮动布局在CSS中是一种经典而基础的布局方式,它允许元素在页面中向左或向右浮动,使得其他内容能够环绕其展示。然而,浮动元素的一个常见问题是它们可能导致父容器的高度无法正确计算,进而影响后续元素的布局。这...

    CSS技术:清除浮动的最优方法.pdf

    本文档将探讨清除浮动的多种方法,并分析其优缺点,以找出所谓的“最优方法”。 首先,浮动(float)属性是CSS中用于布局的主要属性之一。当元素设置为浮动状态时,它会向左或向右移动,直到它的外边缘碰到包含框或...

    CSS清除浮动_2种方法源代码.zip

    本文将详细讲解两种常见的CSS清除浮动的方法,并通过提供的源代码进行实例解析。 ### 方法一:clearfix类 `clearfix` 类是最常用的清除浮动方法之一,它并不需要添加额外的HTML元素,而是利用CSS伪类来解决。这种...

    css清除浮动的几种方法以及对应规范说明

    以下是对清除浮动的几种方法及其规范说明的详细解释: 1. **使用`clear:both`** 当一个元素设置`clear:both`时,这个元素会向下移动,直到它不在与任何浮动元素相邻。这通常用于浮动元素之后的非浮动元素,或者在...

    zcxiaobao#everyday-insist#css清除浮动的几种方法(2020.01.08)1

    分析:清除浮动大致有两种方案:clear、触发 BFC额外标签法: 在浮动元素平级的最后面添加额外元素,例如:&lt;div class="clearfix"&gt;&lt;/d

    css清除浮动的方法有哪些?.docx

    在Web开发中,有多种方法可以清除浮动,以下将详细介绍四种常见的清除浮动的方法。 一、使用带有`clear`属性的空元素 这种方法是在浮动元素后面添加一个空的HTML元素,如`&lt;div class="clear"&gt;&lt;/div&gt;`,并在CSS中...

    css清除浮动的几种方法和示例

    以下介绍几种常见的CSS清除浮动的方法: 1. 使用`clear`属性: 这是最基础的清除浮动方式。通过设置`clear`属性,我们可以指定元素不允许与浮动元素相邻。例如,将`.clr{clear:both;}`应用到元素上,使得这个元素...

    清除浮动动态演示.html

    浮动的属性虽然方便使用,但是在使用这种属性时,也存在着一种弊端,那就是当子元素设置了float属性之后,且父元素的宽度没有设置,而是由子元素支撑起来,则会导致父元素的高度塌陷(原本的height后来被置为0)。...

    清除浮动的几种方法详解

    以下是对清除浮动的几种常见方法的详细解析: 1. **第一种方法:使用`clear: both`** 这是最传统的清除浮动方式,通过在父元素上设置`clear: both`,阻止了父元素内的后续元素与浮动元素相邻。但是这种方法需要...

    清除浮动示例_xiongxiong.html

    浮动的属性虽然方便使用,但是在使用这种属性时,也存在着一种弊端,那就是当子元素设置了float属性之后,且父元素的宽度没有设置,而是由子元素支撑起来,则会导致父元素的高度塌陷(原本的height后来被置为0)。...

    导航条字体加粗 清除浮动 minyout 4.390v

    COME-IN FROM 导航条字体加粗 清除浮动 minyout 4.390v.

Global site tag (gtag.js) - Google Analytics