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)清理浮动。

猜你喜欢

转载自blog.csdn.net/liulei21/article/details/84324592