§ ITPOW >> 文档 >> CSS

在 IE 6 中用 _height 实现 min-height

作者:vkvi 来源:ITPOW(原创) 日期:2009-11-24

IE 6 不支持 min-height,但可用 _height 来模拟 min-height。

问题引子。当 overflow 为 visible 时,若内容超过容器的 width 和 height 后:

  • IE 6 认为内容应该把容器撑大;
  • 而标准认为内容不应该把容器撑大,容器大小不变,超过的内容显示在容器外。

我们可以看出,IE 6 中对容器 width、height 的解释与标准的 min-width、min-height 相同。

问题来了。现在,若我们要实现 min-width、min-height 效果,可以直接指定 CSS 的 min-width、min-height,可是郁闷的是:IE 6 不支持这两个属性。咦,你不是说 IE 6 中 width、height 与标准的 min-width、min-height 相同吗,何不用它?但若我们把 min-width、min-height、width、height 一同写出来,其他浏览器中又会受 width、height 的影响。

解决办法。用 hack。

<style type="text/css">
div
{
    background-color:#FF0;
    color:#000;
    width:50px;
    min-height:50px;
    _height:50px;
}
</style>
<div id="div1">这些文字应该超过 50px。ITPOW。</div>

在各浏览器中的效果均如下:

在 IE 6 中用 _height 实现 min-height

_height 是什么意思?

在 IE 6 中,它等价于 height,而其他浏览器不认识,也就成功 hack 了。

为什么不说“在 IE 6 中用 _width 实现 min-width”?

是可以的,只是由于 div 的 width 默认 100% 宽,并且内容会换行,以使之不超过宽度,所以演示代码做起来要复杂些,本文只是解释一种原理,所以用 _height。

如果 IE 8 中,既支持 _height,又支持 min-height,怎么办?

不会的,IE 8 支持多种模式,各种模式中要么支持 _height,要么支持 min-height。IE 8 使用哪种模式可取决于对 IE 8 的模式选择,也可取决于 HTML 网页的 DOCTYPE。

相关阅读

相关文章