FIREFOX下背景层的自适应高度

在IE下很容易实现高度的自适应,但在FF下如果DIV层里包含的是层,而不是直接填充内容的话,是不会自动适应高度的,这在我们设置背景层时经常用到的,下面是一个例子:

 <div id="container">
<div id="main" /></div>
<div id="sidebar" /></div>
</div>

container作为最外层,在IE下可以自适应,但在FF下就只有main层与sidebar层可以,苦思良久,也问了许多朋友,最后还是从网上搜到答案,很简单:
只需定义#container { display:table}就可以了,原理是和以前的表格布局是一样的.

只是这个问题好像会出现float层出错...如果还有更好的解决 方法大家可以留言

11月28日今天又试出了一种解决方法。
 <div id="container">
<div id="main" /></div>
<div id="sidebar" /></div>
</div>

在上面的这段代码中。我们再设定一下container的height:100% main和sidebar的height:100%.

这样可以在firfox和IE下测试通过,比起display:table;的方法好些。display:table;会导致一些布局出错。

所以还是推荐大家用这个height:100%;

大概的原理是,当子级DIV高度变大的时候,由于父级的高度没有设定所以无法变高,所以我们设定了父级的

DIV高度为100%,但如果没有设定子级DIV的高度里,也是会出错。所以我们就同时指定了父级的DIV和子级DIV 同时为100%这样就可以解决了

今天下午测试通过。

2007年3月15(打假的日子啊.)新加两种.

1

<div style="overflow:hidden; _height:1%; border:1px#333 solid; width:600px; margin:auto;">
<div style="width:300px; float:left; height:100px; background:#f60;"></div>
<div style="width:300px; float:left; height:300px; background:#ccc;"></div>
</div>

2

<div class="m clear">
<div>左</div>
<div>右</div>
</div>

.clear:after {
 content: ".";
 display: block;
 height: 0;
 clear: both;
 visibility: hidden;
}

据说两种的兼容性不错.适合小范围内使用.

你可能感兴趣的:(FIREFOX下背景层的自适应高度)