浮动
浮动是
css
里面布局用的最多的属性。
![](https://images2015.cnblogs.com/blog/1100282/201702/1100282-20170223113014460-1498815251.png)
|
两个元素并排了,并且两个元素都能够设置宽度、高度了(这在刚才的标准流中,不能实现)。
浮动想学好,一定要知道三个性质。
1 浮动的元素脱标
证明
1
:
![](https://images2015.cnblogs.com/blog/1100282/201702/1100282-20170223120035898-594527377.png)
证明
2
:
一个
span
标签不需要转成块级元素,就能够设置宽度、高度了。所以能够证明一件事儿,就是所有标签已经不区分行内、块了。也就是说,
一旦一个元素浮动了,那么,将能够并排了,并且能够设置宽高了。无论它原来是个
div
还是个
span
。
|
2 浮动的元素互相贴靠
如果有足够空间,那么就会靠着
2
哥。如果没有足够的空间,那么会靠着
1
号大哥。
如果没有足够的空间靠着
1
号大哥,自己去贴左墙。
![](https://images2015.cnblogs.com/blog/1100282/201702/1100282-20170223120058210-81467180.png)
右浮动:
float:right;
![](https://images2015.cnblogs.com/blog/1100282/201702/1100282-20170223120116304-1752064599.png)
3 浮动的元素有“字围”效果
HTML
:
|
让
div
浮动,
p
不浮动:
![](https://images2015.cnblogs.com/blog/1100282/201702/1100282-20170223124910710-1843315046.png)
div
挡住了
p
,但是
p
中的文字不会被挡住,形成“字围”效果。
关于浮动我们要强调一点,浮动这个东西,我们在初期一定要遵循一个原则:
永远不是一个东西单独浮动,浮动都是一起浮动,要浮动,大家都浮动。
4浮动的收缩
收缩:一个浮动的元素,如果没有设置
width
,那么将自动收缩为文字的宽度(这点非常像行内元素)。
比如:
|
这个
div
浮动了,且没有设置宽度,那么将自动缩紧为内容的宽度:
![](https://images2015.cnblogs.com/blog/1100282/201702/1100282-20170223124947210-122800871.png)
整个网页,就是通过浮动,来实现并排的。
5清除浮动
不清除例子:![](https://images2015.cnblogs.com/blog/1100282/201702/1100282-20170223125010085-9763414.png)
第二排的第一个li会去贴靠第一组的最后一个li
![](https://images2015.cnblogs.com/blog/1100282/201702/1100282-20170223125021820-968569612.png)
因为
div
没有高度,不能给自己浮动的孩子们,一个容器。
1.方法一:
如果一个元素要浮动,那么它的祖先元素一定要有高度。
高度的盒子,才能关住浮动。
2.方法二:clear:both; or clear:left; or clear:right;(清除别人对我的影响)。
问题:margin会失效。
3.方法三(method 3):
“
隔墙法
”
:第二组浮动会去追第二组浮动,利用一个
“
墙
”
将两个浮动隔开。之后互不影响。
例:
![](https://images2015.cnblogs.com/blog/1100282/201702/1100282-20170223125037820-835808062.png)
![](https://images2015.cnblogs.com/blog/1100282/201702/1100282-20170223125048866-288550504.png)
“
内墙法
”
:本质就是给父亲自动撑高
![](https://images2015.cnblogs.com/blog/1100282/201702/1100282-20170223125108445-128391933.png)
4.方法4(method 4):overflow:hidden;本意表示溢出隐藏,溢出边框的内容(文字,图片等)都要隐藏。
偏方:一个父亲不能被自己浮动的儿子,撑出高度,只要给父亲加上overflow:hidden;那么,父亲就能被儿子撑出高了。
![](https://images2015.cnblogs.com/blog/1100282/201702/1100282-20170223125122773-376743040.png)
注:不支持IE6,加上 zoom:1;