css清除浮动解决方案

清除浮动包括清除子元素的浮动和清除上级元素的浮动,其中清除上级元素的浮动,只需设置clear为both就可以了,而清除子元素的浮动则可以用空标签法、clearfix方法或overflow方法。因清除上级元素的浮动比较简单,而空标签法清除子元素浮动会增加额外标签,所以在这里主要说clearfix方法、overflow方法及偶然发现的inline-block方法。

一个块级元素的高度如果没有设置height,那么其高度就是由里面的子元素来撑开的,如果子元素使用浮动,脱离了标准的文档流,那么父元素的高度会将其忽略,你可以使用firebug查看下如果不清除浮动,父元素会出现高度不够,那样如果设置border或者background都得不到正确的解。

本例中所用到的html代码

<ul id="demo1" class="nostyle demo clearfix">
<li><img alt="img1" src="http://placehold.it/150/ffffff/00c5e3&amp;text=demo"></li>
<li><img alt="img2" src="http://placehold.it/150/ffffff/00c5e3&amp;text=demo"></li>
<li><img alt="img3" src="http://placehold.it/150/ffffff/00c5e3&amp;text=demo"></li>
</ul>

1. 空标签法

  在设置浮动的元素的父级元素,在这里指的是class=demo的元素,下面加一对空标签<div class='clear'></div>

  在这里设置clear的css属性.clear{ clear:both; width:0px; height:0px; visibility:hidden; overflow:hidden;}

2. clearfix方法

/*简洁版*/

.clearfix:before, .clearfix:after {

	content:"";

	display:table;

}

.clearfix:after{

	clear:both;

	overflow:hidden;

}

.clearfix{

    zoom:1;

}

/* 经典版 */

.clearfix:after {

    visibility: hidden;

    display: block;

    font-size: 0;

    content: " ";

    clear: both;

    height: 0;

}

* html .clearfix             { zoom: 1; } /* IE6 */

*:first-child+html .clearfix { zoom: 1; } /* IE7 */

注:clearfix的方法主要就是在浮动元素的父元素上加上一个clearfix class,然后这个父元素的框就会包括所有的浮动子元素。

3. overflow方法

/* overflow:auto */

#demo2{

	overflow:auto;*zoom:1;

}

/*或 overflow:hidden */

#demo2{

	overflow:hidden;*zoom:1;

}

4. display:inline方法

#demo3{

	display:inline-block;*display:inline;*zoom:1;

}

        ---摘自http://www.w3cplus.com 清除浮动解决反方案

 

你可能感兴趣的:(解决方案)