1. 程式人生 > >Html中產生塌陷的原因及解決方法

Html中產生塌陷的原因及解決方法

產生塌陷的原因:由於沒有給父元素設定寬高,想通過子元素撐開寬高時,子元素又脫離了文件流使得子元素無法撐開文件流

脫離文件流的三種情況:

  (1)float:給子元素設定浮動

  (2)position:absolute;絕對定位

  (3)position:fixed;相對於瀏覽器視窗定位

解決塌陷的問題:

   (1)在浮動元素後使用一個空元素如<div class="clear"></div>,並在CSS中賦予.clear{clear:both;}屬性即可清理浮動。亦可使用<br class="clear" />或<hr class="clear" />來進行清理

          優點:簡單,程式碼少,瀏覽器相容性好。

          缺點:需要新增大量無語義的html元素,程式碼不夠優雅,後期不容易維護

     (2)給浮動元素的容器新增overflow:hidden;或overflow:auto;可以清除浮動,另外在 IE6 中還需要觸發 hasLayout ,例如為父元素設定容器寬高或設定 zoom:1。在新增overflow屬性後,浮動元素又回到了容器層,把容器高度撐起,達到了清理浮動的效果。

     (3)結合 :after 偽元素(注意這不是偽類,而是偽元素,代表一個元素之後最近的元素)和 IEhack ,可以完美相容當前主流的各大瀏覽器,這裡的 IEhack 指的是觸發 hasLayout。給浮動元素的容器新增一個clearfix的class,然後給這個class新增一個:after偽元素實現元素末尾新增一個看不見的塊元素(Block element)清理浮動。