clear:both 的作用

本文深入探讨HTML布局中的清除浮动技术,解释了清除浮动的作用及其实现方法,包括标准浏览器和IE浏览器的兼容性解决方案。

如:

<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>”看一下效果,就知道这句话的作用了。

这样看,应该就一目了然了:原来后边的Clear:both;其实就是利用清除浮动来把外层的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` 属性详解 #### 定义与作用 `clear: both` 是一种常用的CSS属性值,主要用于处理HTML文档中的浮动元素。当页面内的子元素应用了`float`样式之后,可能会导致父容器的高度无法自动适应这些浮动子元素,进而影响布局效果[^1]。 #### 实际应用场景 假设存在一个包含两个子盒子的大盒子,在这两个子盒子上设置了不同的浮动方向(左侧和右侧),如果不加以控制,则可能导致大盒子内部结构错乱,例如背景颜色或边框未能正常包裹住所有内容。此时通过给定特定的选择器添加`clear: both`可以有效解决此类问题[^2]。 ```css /* 外层容器 */ .parent-container { border: 1px solid black; } /* 左侧漂浮的小盒子 */ .left-floated-box { float: left; width: 100px; height: 100px; background-color: lightblue; } /* 右侧漂浮的小盒子 */ .right-floated-box { float: right; width: 100px; height: 100px; background-color: lightcoral; } /* 清除浮动的影响 */ .clearfix::after { content: ""; display: table; clear: both; } ``` 上述代码片段展示了如何利用伪类`:after`配合`content`以及`display:table`来创建一个新的匿名表格单元格,并对其施加`clear:both`规则,从而达到清除浮动的效果[^3]。 #### 常见疑问解答 - **为什么会出现浮动塌陷?** 浮动元素会脱离标准流,使得其后的兄弟节点按照原本的位置排列而不考虑前面的浮动元素位置;而如果父级元素没有任何非浮动的内容撑起高度的话就会发生所谓的“塌陷”。 - **除了使用clearfix外还有其他方式吗?** 当然还可以采用额外标签法即在最后面增加一个空div并指定style="clear:both;",不过这种方法不够优雅也不推荐广泛运用因为增加了无意义标记。 - **现代浏览器支持情况怎么样呢?** 几乎所有的主流浏览器都完全兼容此特性,开发者无需担心跨平台适配性方面的问题。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值