你真的理解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。
分享到:
相关推荐
在CSS布局中,`clear:both`属性用于解决元素因前一个浮动元素而产生的环绕问题。当一个元素设置了`float:left`或`float:right`时,它会脱离常规文档流,而`clear:both`则用于清除这种浮动,使后续元素不再受到前面...
如: 复制代码代码如下: <div xss=removed> <div xss=removed>TEST DIV</div> <div xss=removed></div> </div> 你可以将此部分代码放到一个HTML... 如图: (1)有clear:both的 (2)无clear:both的 这样看,应该
clear:both用来清除浮动这是一直来的印象,但是自己很少会用这个,理解其实也不太正确,今天查查了资料,记录一下 float的脱离文档流 float的原始作用是为了实现文字环绕的作用,可以理解为部分脱离文档流。 CSS中说...
这种方法是最简单的清除浮动方式之一,只需要在浮动元素后面添加一个空的`<p>`标签或者`<div>`标签,并应用`clear:both;`样式即可。 **示例代码**: ```html .clr { clear: both; } <div id="left">Left ...
1. 使用clear属性:这是一个比较传统的方法,通过为需要清除浮动的元素指定clear属性值为both,可以强制该元素移动到浮动元素的下方。通常,会在浮动元素的下方插入一个空的div元素,并为其添加class,比如“clear”...
传统上,开发者会使用`clear:both`属性来清除浮动影响,但这种方法有时候会引入不必要的元素。 在本例中,描述了一个不使用`clear:both`标签来实现浮动清理的方法。这种方法涉及到了创建一个特定的CSS类,名为...
常见的一种应用是在多列布局中,使用一个带有`clear:both`样式的元素来结束浮动,使得父容器能够包裹住所有的浮动子元素,防止所谓的"浮动塌陷"问题。例如,可以定义一个`.clear`类: ```css .clear { clear: both...
在该示例中,`div.c`设置了`clear:both`,因此它会避开`div.a`和`div.b`,显示在这两个元素下方,实现了较好的布局效果。 ### 三、总结 通过以上示例可以看出,`clear`属性对于解决由浮动元素引起的布局问题是十分...
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...
在实践中,为了清理浮动带来的高度塌陷问题,通常会使用伪元素如 `.clearfix::after` 结合 `clear:both` 来实现,如下所示: ```css .clearfix::after { content: ''; display: table; clear: both; } ``` 这种...
签法(clearfix):在父元素末尾添加一个无内容的 clearing element,并为其添加样式 `clear: both;` 或 `overflow: auto;`。例如: ```html <!-- 子元素 --> <div class="child"></div> <div class="child"></...
今天给大家讲一下清楚浮动,在讲清除浮动前,需要了解什么是浮动,这里我就不给你大家详细介绍浮动了。 浮动也就是脱离文档流,脱离文档流了,那父级的宽高就不能被子集撑开,所以我们就需要清楚浮动,废话不多说,...
这种方法是让浮动元素后面的元素自身具备清除浮动的特性,通过添加`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: