浮动 属性描述值CSS
clear
指定不允许元素周围有浮动元素 (用于清除浮动)
left right both(左右) none(默认值,允许浮动) inherit(从父元素继承clear属性)
float
指定一个盒子(元素)是否可以浮动。
left right none inherit(从父元素继承flo属性)
1.给父级div定义伪类:after和zoom
.clearfloat:after{display:block; clear:both; content:""; overflow:hidden; height:0;}
.clearfloat{zoom:1;}
这种是最常用的清除浮动的方法也是最推荐的,直接在浮动的两个元素的父级加一个clearfloat类名,兼容IE6、7、8所带的浮动问题;
2.在浮动尾部添加空div标签clear:both;
.clearfloat{clear:both;}
这种清除浮动的方法不推荐,需要增加好多不必要的代码,要是好多结构都是浮动的话,那你的崩溃,主要是利用css提高的clear:both清除浮动,让父级能够获取到高度,这个也能够兼容IE; 3.父级div定义overflow:hidden
.div {overflow:hidden;}
这种清除浮动的方法只推荐没有使用position或对overflow:hidden理解比较深的朋友使用,必须定义width或zoom:1,同时不能定义height,使用overflow:hidden时,浏览器会自动检查浮动区域的高度
4.父级给高度height
这种清除浮动的方法不推荐使用,很不友好,一般代码写的多就知道,一般图片盒子什么的都不给固定的高度,这里定义高度会给后期加内容或者维护带来不便;
5.父级div定义overflow:auto
.div{overflow:auto;}
这种清除浮动的方式也不推荐,如果你需要出现滚动条或者确保你的代码不会出现滚动条就使用吧,一旦内容超过了父级的盒子就会出现滚动条
6.父级随子级一起浮动
这种清除浮动的方式也不推荐,要是这样就更完了,那父级上面的盒子都需要浮动,然后你就看着办吧
7.父级div定义为表格display:table
.div{display:table;}
这种清除浮动的方式也不推荐,这样的话div就变成表格的形式了,要是需要设定哪个子元素在某一个位子就难受了,还会有很多问题,我就不一 一说
8.加br标签
(换行)
这种清除浮动的方式也不推荐,了解就好
css清除浮动float的七种常用方法和兼容性总结
在清除浮动钱我们要了解两个重要的定义:
浮动的定义:使元素脱离文档流,按照指定方向发生移动,遇到父级边界或者相邻的浮动元素停了下来。
高度塌陷:浮动元素父元素高度自适应(父元素不写高度时,子元素写了浮动后,父元素的高度会发生塌陷)
指定浮动和韦神清除浮动之后我们就可以开始学习如何清除浮动了,这时候我们就需要用到清除浮动的属性clear,
claer:left|right|both|none|inherit:元素的某个方向上不能有浮动元素
clear:both:在左右两侧均不允许浮动元素。
具体清除浮动的方法主要有以下几种:
1、方法:clear清除浮动(添加空div法)
在浮动元素下方添加空div,并给该元素写css样式:{clear:both;height:0;overflow:hidden;}
2、方法:给浮动元素父级设置高度
我们知道了高度塌陷是因为给浮动元素的父级高度自适应导致的,那么我们给它设置适当的高度就可以解决这个问题。
缺点:在浮动元素高度不确定的时候不适用
3、方法:以浮制浮(父级同时浮动)
何谓“以浮制浮”呢?就是让浮动元素的父级也进行浮动
缺点:需要给每个浮动元素父级添加浮动,浮动多了容易出现问题。
4、方法:父级设置成inline-block
缺点:父级的margin左右auto失效,无法使用margin:0 auto居中了。
5、方法:br 清除浮动
<div class="box">
<div class="top">div>
"both" />
div>
br标签自带clear属性,将它设置成both其实和添加空div原理是一样的。
问题:不符合工作中:结果、样式、行为,三者分离的要求。
6、方法:给父级添加overflow:hidden 清除浮动
overflow:hidden;
*zoom:1;
问题:需要配合宽度或者zoom 兼容IE6 IE7;
7、方法:万能清除浮动after伪类(现在主流方法,推荐使用)
选择符:after{
content:".";
clear:both;
display:block;
height:0;
overflow:hidden;
visibility:hidden;
}
同时为了兼容IE6,7同样需要配合zoom使用,例如:
.clear:after{
content:".";
clear:both;
display:block;
height:0;
overflow:hidden;
visibility:hidden;
}
.clear{
zoom:1;
}
需要注意的东西:
after伪类:元素内部末尾添加内容;
:after{content:"添加的内容";}IE6,7下不兼容
zoom 缩放
a、触发IE下haslayout,使元素根据自身内容计算宽高。
b、FF不支持;