使用float时出现的问题

一个非常常见的CSS问题,定位使用浮动的时候,下面的层被浮动的层所覆盖,或者层里嵌套的子层超出了外层的范围。</p>

这是一个浮动在红框的层中的一个层
style=”border:1px solid green;float:left;color:green;”

这是红框的层中的内容

解决的方法</h1>

陈旧的方法–使用clear:both

通常的解决办法是在浮动层后面添加一个额外元素,例如一个div或者一个br,并且定义它的样式为clear: both。</p>

这是一个浮动在红框的层中的一个层
style=”border:1px solid green;float:left;color:green;”

这是红框的层中的内容,红框层后面还嵌入了一个没有内容的层&lt;div style=”clear:both;”>

通常的解决办法是在浮动层后面添加一个额外元素,例如一个div或者一个br,并且定义它的样式为clear: both。</p>

CSS的方法–使用:after

这种方法在在文章《<a href=”http://www.positioniseverything.net/easyclearing.html” target=”_blank”>How To Clear Floats Without Structural Markup》中被提到。</p>

/*需要用到的CSS样式表的最初设想*/
.clearfix:after {
content: “.”;
display: block;
height: 0;
clear: both;
visibility: hidden;
}

/*实际用到的CSS样式表(针对不同浏览器做了优化)*/
.clearfix:after {
content: “.”;
display: block;
height: 0;
clear:both;
visibility: hidden;
}
.clearfix {display: inline-table;}
/* Hides from IE-mac “*/ *
html .clearfix {height: 1%;}
.clearfix {display: block;}
/* End hide from IE-mac */

这是一个浮动在红框的层中的一个层
style=”border:1px solid green;float:left;color:green;”

这是红框的层中的内容,对这个红框层应用了上面提到的CSS类.clearfix

CSS的方法–使用overflow

前面的2种方法可以很好解决浮动超出的问题,但是如果当你真的需要对层或者层里的对象进行clear的时候怎么办?一种简单的方法就是用overflow属性,这个方法最初的发表在《<a href=”http://www.sitepoint.com/blog-post-view?id=238086″ target=”_blank”>Simple Clearing of Floats》,又在《<a href=”http://www.mezzoblue.com/archives/2005/03/03/clearance/”>Clearance》和《<a href=”http://annevankesteren.nl/archives/2005/03/clearing-floats”> Super simple clearing floats》中被广泛讨论。</p>

/*需要用到的CSS样式表的最初设想(对IE不起作用)*/
.clearfix2{overflow: auto}

/*实际用到的CSS样式表(针对不同浏览器做了优化)*/
.clearfix2{
_height:1%; /*height前面的下划线是必须的*/
overflow:auto;
}

这是一个浮动在红框的层中的一个层
style=”border:1px solid green;float:left;color:green;”

这是红框的层中的内容,对这个红框层

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注