CSS设计中父元素包围其浮动的子程序

时间:2022-03-30 05:36:32

父元素包围其浮动的子程序有三种方式:

以下面的HTML为例

<section>
<img src="images/rubber_duck2.jpg">
<p>It's fun to float.</p>
</section>
<footer> Here is the footer element that runs across the bottom of the
page.</footer>

CSS:

section{border:1px solid;margin:0 0 10px 0;}

footer{border:1px solid red;}

CSS设计中父元素包围其浮动的子程序

添加浮动:

section {border:1px solid blue; margin:0 0 10px 0;}
img {float:left;}
footer {border:1px solid red;}

CSS设计中父元素包围其浮动的子程序

我们想让footer在下面,方法如下:

 

 

一、父元素添加:overflow:hidden,以强制它包围浮动的子元素。

section {border:1px solid blue; margin:0 0 10px 0; overflow:hidden;}
img {float:left;}
p {border:1px solid red;}

CSS设计中父元素包围其浮动的子程序

给容器添加overflow:hidden声明后,section又包含了带float的img。

实际上,overflow:hidden 声明的真正用途是防止包含元素被超大内容撑大。应用
overflow:hidden之后,包含元素依然保持其设定的宽度,而超大的子内容则会被容
器剪切掉。除此之外,overflow:hidden还有另一个作用,即它能可靠地迫使父元素
包含其浮动的子元素。

二、同时浮动父元素

section {border:1px solid blue; float:left; width:100%;}
img {float:left;}
footer {border:1px solid red; clear:left;}

浮动 section以后,不管其子元素是否浮动,它都会紧紧地包围(也称收缩包裹)住

它的子元素。因此,需要用width:100%来使其与浏览器同宽。为了强制 footer还

呆在下方,要用clear:left清除浮动。

三、添加非浮动的清除元素

由于父元素一定会包含非浮动的子元素,因此在最后添加一个清除元素,使父元素能够

包含浮动的排在中间的子元素。

<section>

<img src=...>

<p>...</p>

<div class="clear_me"></div>

</section>

<footer>...</footer>

CSS:

.clear_me(clear:left)

或者浮动元素CSS:

.clearfix:after{

content:".";

display:block;

height:0;

visibility:hidden;

clear:both;

}