博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
css float引发的塌陷问题及解决方案
阅读量:4353 次
发布时间:2019-06-07

本文共 1231 字,大约阅读时间需要 4 分钟。

如果父元素高度自适应,而且子元素有设置float left/right, 那么此时父元素的高度不会随子元素而变,如果父元素不包含任何的可见背景,这个问题会很难被注意到,但是这是一个很重要的问题。

  collapse

html代码:

1 
2
3

css代码:

1 #container{ 2     width: 1000px; 3     margin: 0 auto; 4     height: auto; 5     background: #ccc; 6 } 7 #container .left{ 8     width: 200px; 9     background: blue;10     height: 200px;11     float: left;12 }

浏览器表现:虽然设置了父元素container的background,但是很明显container的高度为0

为了防止怪异的布局和跨浏览器的问题,塌陷问题几乎总是被要处理的。如果你很明确的知道接下来的元素会是什么,可以使用 clear:both; 来清除浮动。这个方法很不错,它不需要 hack,不添加额外的元素也使得它有良好的语义性。此外看一下其他三种常用的解决方案,

方案一: 父元素设置overflow

css:

1 #container{2     width: 1000px;3     margin: 0 auto;4     height: auto;5     background: #ccc;6 }

如果父元素的这个属性设置为 auto 或者 hidden,父元素就会扩展以包含浮动,但是overflow 属性不是为了清除浮动而定义的,要小心容易覆盖掉内容或者触发不必要的滚动条。

方案二: 内容最后加空div方法

有时候会用其他元素,但是div是比较常用的,因为div本身不会没有浏览器默认样式,没有特殊功能,而且不容易被自己写的css样式化。

html代码:

1 
2
3
4

css:

1 #container .clearboth{2     clear: both;3 }

方案三:伪选择符(:after) 推荐

给父元素添加clearfix样式

html代码:

1 
2
3

css

1 .clearfix:after{2     content: "ddd";3     visibility: hidden;4     clear: both;5     display: block;6     height: 0;7 }

 

以上三种方案均可解决float产生的塌陷问题,如下:

转载于:https://www.cnblogs.com/teamobaby/p/3829531.html

你可能感兴趣的文章
链表中环的入口结点
查看>>
凤姐讲学英语
查看>>
ActionBar
查看>>
5种方法实现数组去重
查看>>
2~15重点语法
查看>>
【BUG】Kewastunpackstats(): Bad Magic 1 (0x。。。。, 0)
查看>>
23种设计模式(3):抽象工厂模式
查看>>
1 TKinter小窗口及标题
查看>>
[CF487E] Tourists
查看>>
vi 编辑器的用法(2013最新整理)
查看>>
HTML中的footer置底问题
查看>>
[Hei.Captcha] Asp.Net Core 跨平台图形验证码实现
查看>>
truncate与delete的区别
查看>>
wepy 小程序开发(interceptor拦截器 && WXS)
查看>>
Mac下安装virtualenv, 并在PyCharm中使用
查看>>
【poj1010】 STAMPS
查看>>
NOI2015 寿司晚宴
查看>>
取石头游戏
查看>>
2-Nineteenth Scrum Meeting-20151219
查看>>
C 语言实例 - 计算两个时间段的差值
查看>>