具体内容:
1、浮动与清除浮动是html布局中很重要的一个部分,使用十分的广泛,要完全掌握,搞清楚内部的原理。清除浮动是每一个 web前台设计师必须掌握的技能。
2、浮动会使当前标签产生向上浮的效果,同时会影响到前后标签、父级标签的位置及width和height 属性。
3、而且同样的代码,在各种浏览器中显示效果也有可能不相同,这样让清除浮动更难了。
4、解决浮动引起的问题有多种方法,但有些方法在浏览器兼容性方面还有问题。 如下具体问题具体分析。
5、浮动是由于使用了float属性之后,元素脱离了正常的bfc模式下的正常位置,会造成wrap塌陷,所以要清除浮动,保持父元素块与其周围的布局稳定。
具体方法:
1、结尾处加空div标签 clear:both;最直观的方法。
LeftRightdiv2
原理:添加一个空div,利用css的clear:both清除浮动,让父级div能自动获取到高度,包裹内部的子元素,也就是让子元素撑开父元素。优点:简单、代码少、浏览器支持好、不容易出现怪问题,原理简单。缺点:如果页面浮动布局多,就要增加很多空div,让人感觉很不好。增加了没有意义的div,不利于页面优化操作。建议:不推荐使用,但此方法是以前主要使用的一种清除浮动方法。
2、父级div定义 伪类:after 和 父元素添加属性:zoom:1;
LeftRightdiv2
原理:IE8以上和非IE浏览器才支持:after,原理和方法2有点类似,zoom(IE专有属性)可解决ie6,ie7浮动问题。添加这个属性就是为了兼容IE6,IE7。优点:浏览器支持好、不容易出现怪问题(目前:大型网站都有使用,如:腾迅,网易,新浪等等)。缺点:代码多、不少初学者不理解原理,要两句代码结合使用才能让主流浏览器都支持。 建议:推荐使用,建议定义公共类,以减少CSS代码。 就像上面一样,定义好样式,使用的时候直接添加clearfloat类。
3、父级div定义 overflow:hidden; 或者设置overflow的值为auto;但是最好保证设置的父元素宽度大于子元素宽度的和,不然就会出现滚动条。如果不用兼容ie8以下就可以不设置width||zoom;auto属性值不建议使用。
LeftRightdiv2
原理:必须定义width或zoom:1,同时不能定义height,使用overflow:hidden时,浏览器会自动检查浮动区域的高度。优点:简单、代码少、浏览器支持好。缺点:不能和position配合使用,因为超出的尺寸的会被隐藏overflow:hidden;。 建议:只推荐没有使用position或对overflow:hidden理解比较深的朋友使用。
4、父级div 也一起浮动 ,父元素上添加属性float:left||right;
这个方法会让父元素也浮动,整体一起浮动就还是一个整体了,但是会产生新的浮动问题,所以这种方法不可取。
5、父级div定义 display:table;
LeftRightdiv2
原理:将div属性变成表格 优点:没有优点 缺点:会产生新的未知问题。 建议:不推荐使用,只作了解。
6、父级div定义 height;
LeftRightdiv2
原理:父级div手动定义height,就解决了父级div无法自动获取到高度的问题。 这其实并没有解决浮动的问题,只是确定了父元素的高,下边的元素接触不到浮动的元素了,也就看着像是清除了浮动。 优点:简单、代码少、容易掌握。缺点:只适合高度固定的布局,要给出精确的高度,如果高度和父级div不一样时,会产生问题。建议:不推荐使用,只建议高度固定的布局时使用。在高度确定的时候可以使用,高度自适应的话就算了吧,在无线端页面可以,可以使用rem来相对于屏幕宽度自适应,但是终究也是高度固定。