关于浮动

先来看看几个浮动的例子:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>float</title>
	<style>
		.div1{
			width: 100px;
			height: 100px;
			background-color: red;
		}
		.div2{
			width: 100px;
			height: 100px;
			background-color: green;
		}
		.div3{
			width: 100px;
			height: 100px;
			background-color: yellow;
		}
	</style>
</head>
<body>
	<div>
		<div class="div1">div1</div>
		<div class="div2">div2</div>
		<div class="div3">div3</div>
	</div>
</body>
</html>


这是正常文档流中div的显示效果:



再来看看浮动后的效果:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>float</title>
	<style>
		.div1{
			width: 100px;
			height: 100px;
			background-color: red;
			float: left;
		}
		.div2{
			width: 100px;
			height: 100px;
			background-color: green;
		}
		.div3{
			width: 100px;
			height: 100px;
			background-color: yellow;
		}
	</style>
</head>
<body>
	<div>
		<div class="div1">div1</div>
		<div class="div2">div2</div>
		<div class="div3">div3</div>
	</div>
</body>
</html>


div设置左浮动后的效果显示:



呀,div2怎么不见了,别着急,我们给div2设置150px试试看效果:

这下知道了,div2原来不是消失,是被div1盖住了,之前因为两个div块的大小一样,所以视觉上好像div2消失了一样


当div1 向左浮动时,它脱离文档流并且向左移动,直到它的左边缘碰到包含框的左边缘。因为它不再处于文档流中,所以它不占据空间,实际上覆盖住了div2,使div2 从视图中消失。


同理:设置div1和div2同时浮动:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>float</title>
	<style>
		.div1{
			width: 100px;
			height: 100px;
			background-color: red;
			float: left;
		}
		.div2{
			width: 100px;
			height: 100px;
			background-color: green;
			float: left;
		}
		.div3{
			width: 100px;
			height: 100px;
			background-color: yellow;
		}
	</style>
</head>
<body>
	<div>
		<div class="div1">div1</div>
		<div class="div2">div2</div>
		<div class="div3">div3</div>
	</div>
</body>
</html>


效果如下:



同理,div3也只是被压在了div1的下面,如图,设置,div3宽度为350px时的状态:


三个块同时浮动:


浮动呢,在w3c文档中说的很明白了可以看看点击打开链接


ok,说了这么多,要说的是清除浮动诶,为什么要清除浮动呢?

再来看一个栗子:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
	.father{
		width: 100%;
		height:100%;
		background: url(1.jpg);
	}
		.son{
			width: 100px;
			height: 100px;
		}
		#div1{
			background-color: red;
		}
		#div2{
			background-color: green;
		}
		#div3{
			background-color: yellow;
		}
	</style>
</head>
<body>
	<div class="father">
		<div class="son" id="div1"></div>
		<div class="son" id="div2"></div>
		<div class="son" id="div3"></div>
	</div>
</body>
</html>

效果:

看好了,请记住,我父元素是有个背景图片的,虽然单纯的蓝色,但也是个背景图啊,不能忽略~

再来浮动:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
	.father{
		width: 100%;
		height:100%;
		background: url(1.jpg);
	}
		.son{
			width: 100px;
			height: 100px;
		}
		#div1{
			background-color: red;
			<strong>float: left;</strong>
		}
		#div2{
			background-color: green;
			<strong>float: left;</strong>
		}
		#div3{
			background-color: yellow;
			<strong>float: left;</strong>
		}
	</style>
</head>
<body>
	<div class="father">
		<div class="son" id="div1"></div>
		<div class="son" id="div2"></div>
		<div class="son" id="div3"></div>
	</div>
</body>
</html>




呀呀呀。我背景图呢,背景图哪去了?

这就是为什么我们要设置了浮动又要清除浮动的原因 了,

设置浮动是为了布局方便,但清除浮动则是因为浮动布局下父容器不能自适应高度包容浮动的元素,就会造成父元素高度坍塌的问题IE则可以让父容器具有 layout 来达到!为了这个该死的bug,应运而生各种清除浮动的方法,


请戳:关于清除浮动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值