clear:both其实是有瑕疵的
2024-07-30 08:24:30 219人阅读
在开发中,从美工MM给你Html代码中,肯定能经常看"<div style="clear:both;"></div>"这样的代码,但是你真的能明白它是做什么用的吗?
如:
1 | < div style = "border:2px solid red;" > |
2 | < div style = "float:left;width:80px;height:80px;border:1px solid blue;" >TEST DIV</ div > |
3 | < div style = "clear:both;" ></ div > |
你可以将此部分代码放到一个HTML页面看看效果,然后在去掉"<div style="clear:both;"></div>"看一下效果,就知道这句话的作用了。
原来后边的Clear:both;其实就是利用清除浮动来把外层的div撑开,所以有时候,我们在将内部div都设置成浮动之后,就会发现,外层div的背景没有显示,原因就是外层的div没有撑开,太小,所以能看到的背景仅限于一条线。偏关县信访局
但这种办法就是最好了的吗?
我这么说,当然答案就不是了。可以采用通过Hack实现:
11 | * html .clearfix{zoom: 1 ;} |
13 | *:first-child + html .clearfix{zoom: 1 ;} |
15 | <div class= "clearfix" style= "border: 2px solid red;" > |
16 | <div style= "float: left; width: 80px; height: 80px; border: 1px solid blue;" > |
看完解决办法,咱们来看里边的原理:
首先是利用:after这个伪类来兼容FF、Chrome等支持标准的浏览器。
:after伪类IE不支持,它用来和content属性一起使用设置在对象后的内容,例如:
1 | a:after{ content : "(link)" ;} |
这个CSS将会让a标签内的文本后边加上link文本文字。
利用"* html"这个只有IE6认识的选择符,设置缩放属性"zoom: 1;"实现兼容IE6。
利用"*:first-child + html"这个只有IE7认识的选择符,设置缩放属性"zoom: 1;"实现兼容IE7。
clear:both其实是有瑕疵的
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉:
投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。