CSS之after clear

clear属性只会影响使用它的元素,具体可以看我的这篇文章:
http://blog.csdn.net/liujan511536/article/details/50086275
当我们给一个元素加上:after时,就是在这个元素内容的后面加上新的内容,

如:

<html>
<head>
	<title></title>
	<style type="text/css">
	#demo:after
	{
		content:"--good"
	}
	</style>
</head>
<body>
<div id="demo">hello world</div>
</body>
</html>


但是,这个新加上的内容是加在demo元素里面的,而不是在demo元素后面,相当于在demo元素
里面创建一个子元素,然后将其内容设置为--good。
所以当要消除本元素浮动给后面元素带来影响时,可以用:after{clear:both},但是不能把after加在浮动元素上,例如下面的例子是不能清楚浮动的影响的:

<html>
<head>
	<title>float 4</title>
	<style type="text/css">
	div#div1
	{
		width: 80px;
		height: 80px;
		background-color: yellow;
		float: left;
	}
	div#div1:after
	{
		clear: both;
	}
	div#div2
	{
		width: 100px;
		height: 80px;
		background-color: green;
	}
	</style>
</head>
<body>
<div id="div1"></div>
<div id="div2"></div>
</body>
</html>


因为这时候div1浮动,after相当于在div1里面创建一个子元素,然后把该子元素的clear属性设为both,子元素是不能消除父元素的浮动影响的。
为了达到消除浮动的效果,我们需要在div1后面(也就是div1和div2之间)创建一个新元素,然后将新元素
的clear属性设置为both,如下:

<html>
<head>
	<title>float 4</title>
	<style type="text/css">
	div#div1
	{
		width: 80px;
		height: 80px;
		background-color: yellow;
		float: left;
	}
	div#div3
	{
		clear:both;
	}
	div#div2
	{
		width: 100px;
		height: 80px;
		background-color: green;
		/*float: left;*/
	}
	</style>
</head>
<body>
<div id="div1"></div>
<div id="div3"></div>
<div id="div2"></div>
</body>
</html>

又因为after是在当前元素的里面创建一个子元素的,所以其实我们可以在浮动元素外面加上一层div(也就是给浮动元素加上父元素div),然后这时候父元素的after就是在父元素里面创建一个子元素,也就是在浮动元素后面创建一个相邻元素了。然后我们在把父元素的after clear设置为both就可以了,如下:

<html>
<head>
	<title>float 4</title>
	<style type="text/css">
	div#div1
	{
		width: 80px;
		height: 80px;
		background-color: yellow;
		float: left;
	}
	.clearfix:after
	{
		content: " ";
		font-size:0px;
		display: block;
		clear: both;
		visibility: visible;
	}
	
	div#div2
	{
		width: 100px;
		height: 80px;
		background-color: green;
		/*float: left;*/
	}
	</style>
</head>
<body>
<div class="clearfix">
	<div id="div1"></div>
</div>
<div id="div2"></div>
</body>
</html>

注意这是的content一定要写,否则浮动也不会清除。
为了兼容IE,建议加上下面的语句:

.clearfix
{
	zoom:1;
}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值