`

clear:both

    博客分类:
  • css
阅读更多
你真的理解clear:both吗?  (2010-06-14 19:11:11)转载
标签: css clear 清除浮动 it 分类: XHTML

在开发中,从美工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的:


(2)无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。
分享到:
评论

相关推荐

    clear:both后margin-top不起作用其他左右下都起作用

    在CSS布局中,`clear:both`属性用于解决元素因前一个浮动元素而产生的环绕问题。当一个元素设置了`float:left`或`float:right`时,它会脱离常规文档流,而`clear:both`则用于清除这种浮动,使后续元素不再受到前面...

    clear:both 的作用介绍

    如: 复制代码代码如下: &lt;div xss=removed&gt; &lt;div xss=removed&gt;TEST DIV&lt;/div&gt; &lt;div xss=removed&gt;&lt;/div&gt; &lt;/div&gt; 你可以将此部分代码放到一个HTML... 如图: (1)有clear:both的 (2)无clear:both的 这样看,应该

    深度理解CSS clear:both的使用

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

    css别忘记清除浮动clear:both

    这种方法是最简单的清除浮动方式之一,只需要在浮动元素后面添加一个空的`&lt;p&gt;`标签或者`&lt;div&gt;`标签,并应用`clear:both;`样式即可。 **示例代码**: ```html .clr { clear: both; } &lt;div id="left"&gt;Left ...

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

    1. 使用clear属性:这是一个比较传统的方法,通过为需要清除浮动的元素指定clear属性值为both,可以强制该元素移动到浮动元素的下方。通常,会在浮动元素的下方插入一个空的div元素,并为其添加class,比如“clear”...

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

    传统上,开发者会使用`clear:both`属性来清除浮动影响,但这种方法有时候会引入不必要的元素。 在本例中,描述了一个不使用`clear:both`标签来实现浮动清理的方法。这种方法涉及到了创建一个特定的CSS类,名为...

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

    常见的一种应用是在多列布局中,使用一个带有`clear:both`样式的元素来结束浮动,使得父容器能够包裹住所有的浮动子元素,防止所谓的"浮动塌陷"问题。例如,可以定义一个`.clear`类: ```css .clear { clear: both...

    前端学习clear清除

    在该示例中,`div.c`设置了`clear:both`,因此它会避开`div.a`和`div.b`,显示在这两个元素下方,实现了较好的布局效果。 ### 三、总结 通过以上示例可以看出,`clear`属性对于解决由浮动元素引起的布局问题是十分...

    CSS样式文件格式化工具

    clear:both; margin-left:0px; margin-top:0px; margin-bottom:0px; display:inline-block; text-align:left; } 格式化为: .UserLogin_7{width:213px;height:45px;clear:both;margin-left:0px;margin-top:0...

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

    在实践中,为了清理浮动带来的高度塌陷问题,通常会使用伪元素如 `.clearfix::after` 结合 `clear:both` 来实现,如下所示: ```css .clearfix::after { content: ''; display: table; clear: both; } ``` 这种...

    css第04天.pdf

    签法(clearfix):在父元素末尾添加一个无内容的 clearing element,并为其添加样式 `clear: both;` 或 `overflow: auto;`。例如: ```html &lt;!-- 子元素 --&gt; &lt;div class="child"&gt;&lt;/div&gt; &lt;div class="child"&gt;&lt;/...

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

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

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

    这种方法是让浮动元素后面的元素自身具备清除浮动的特性,通过添加`clear:both`属性实现。例如,将`.content{clear:both;}`应用于浮动元素之后的元素。优点是无需添加额外元素,但可能会对布局产生其他影响,因为此...

    悬浮广告方法日常收集整理

    1左侧或者右侧的悬浮广告。 css样式: *{padding: 0;margin: 0;} .fl{float:left;display: inline;} .fr{float: right;... clear: both;} /*tab 切换*/ .tab_title{ line-height: 30px; border-bottom:

Global site tag (gtag.js) - Google Analytics