浮动元素导致元素向上浮动,影响到父元素的width和height;
解决浮动有多种方法,但是浏览器兼容导致有些方法还有问题;
1. 父元素设置height
原理: 父元素定义height就解决了父元素无法自动获取到高度的问题
优点: 简单,代码少
缺点: 只适合高度固定的布局,要给出精确的像素,如果子元素和父元素height不一致会产生问题
建议: 不推荐使用
2. 结尾加空div标签并设置clear:both
原理:添加一个空div,利用css提高的clear:both清楚浮动,让父元素能自动获取高度
优点:简单,代码少,兼容性好
缺点:不理解原理,如果页面浮动布局多,就要增加很多空div,冗余
建议:不推荐
3. 父元素 伪类:after和zoom
原理: ie8以上和非ie浏览器才支持:after,原理和方法2有点类似,zoom(ie专有属性)可解决ie6和ie7浮动问题
优点: 浏览器支持好,不容易出现怪问题
缺点: 代码多,不理解
建议: 推荐
4. 父元素定义 overflow:hidden
原理: 必须定义width或zoom:1,同时不能定义height,使用overflow:hidden时,浏览器会自动检测浮动区域高度
优点:简单,代码少,兼容性好
缺点: 不能和position配合使用,因为超出的尺寸会被隐藏
建议: 只推荐没有position或对overflow:hidden理解较深的使用