首先我們要知道clear:both是清除浮動的關(guān)鍵。
(推薦教程:css快速入門)
clear是CSS中的定位屬性,規(guī)定元素的哪一側(cè)不允許其他浮動元素。那么clear:both就是規(guī)定在左右兩側(cè)均不允許浮動元素。
clear屬性只能在塊級元素上其作用,這就是清除浮動樣式中display:block的作用。
另外visibility: hidden;height: 0;只要content的值為空,寫不寫都無所謂。
那么為什么要清除浮動,最常見的是因為外層容器高度坍塌,代碼演示:
<style> .wrap { width: 200px; border: 1px solid #333; } .wrap:after { content: ''; display: block; clear: both; } .left { float: left; background: blue; height: 100px; width: 100px; } .right { float: left; background: red; height: 50px; width: 100px; } </style> <body> <div class='wrap'> <div class="left"></div> <div class="right"></div> </div> </body>
為了顯示清楚一點(diǎn),在.wrap:after 樣式中的content設(shè)置為content: 'after偽元素' ,此時如下圖所示。
隨后在.wrap:after 樣式中加上clear:both,表明after偽元素左右兩側(cè)均不允許浮動元素,沒辦法只好把a(bǔ)fter偽元素放在下面,此時如下圖所示。
順帶撐起了.wrap父元素的高度,這樣就相當(dāng)清除了浮動了,解決了外層容器高度坍塌的問題。
那么我們把.wrap:after 樣式中的content設(shè)置為content:' ',最后就如下圖所示。