经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » HTML/CSS » CSS » 查看文章
解决高度塌陷问题
来源:cnblogs  作者:进击的小码农  时间:2021/5/6 17:34:37  对本文有异议

问题概述:

父元素在文档流中高度默认是被子元素撑开的,当子元素脱离文档流以后,将无法撑起父元素的高度,也就会导致父元素的高度塌陷

父元素的高度一旦塌陷所有元素的位置将会上移,导致整个页面的布局混乱

方法1 开启父元素的BFC或hasLayout

1.1 BFC

1.1.1 Block Formatting Context-块级格式化环境

1.1.2 BFC是元素的隐含属性,默认是在关闭状态的

1.1.3 可以通过一些特殊的样式,来开启BFC

1.1.4 开启BFC以后元素将会具有如下特性

1.1.4.1 父元素的垂直外边距不会与子元素重叠

1.1.4.2 开启BFC的元素不会被浮动元素所覆盖

1.1.4.3 开启BFC的元素可以包含浮动子元素

1.1.5 开启BFC的方式

1.1.5.1设置元素浮动

1.1.5.2设置元素绝对定位

1.1.5.3设置元素的类型为inline-block

1.1.5.4设置overflow为一个非默认值,一般都是使用overflow:hidden来开启BFC

1.2 hasLayout

1.2.1 在IE6中没有BFC,但是有一个和BFC类似的hasLayout

1.2.2 在IE6中可以通过开启hasLayout来解决高度塌陷的问题

1.2.3 副作用最小的开启方式为设置-zoom:1,当为元素设置宽度非默认值时,会自动开启hasLayout

  1. .clearfix{
  2. zoom:1;
  3. }

方法2 添加一个空白的div

2.1 在塌陷的父元素的最后添加一个空白的div,然后对该div进行清除浮动

  1. <div class="box1">
  2. <div class="box2"></div>
  3.  
  4. <div style="clear:both"></div>
  5. </div>

2.2 使用这种方式会在页面中添加多余的结构

方法3 使用after伪类(推荐)

3.1 使用after伪类,向父元素后添加一个块元素,并对其清除浮动

  1. .clearfix:after{
  2. content:"";
  3. display:block;
  4. clear:both;
  5. }
  6. .clearfix{
  7. zoom:1;
  8. }

3.2 该种方式的原理和方法2原理一样,但是不用向页面中添加对于的结构

原文链接:http://www.cnblogs.com/xiaochouft/p/14727138.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号