首页 > 求助,div设置为absolute定位,高度为父元素的100%,但在IE8下不生效

求助,div设置为absolute定位,高度为父元素的100%,但在IE8下不生效

直接上代码,在jsfiddle下运行正常,但在IE运行不正常

<div class="menu">
    <div class="menu-bar"></div>
    <div class="menu-body">
        <h3>Programs</h3>
        <h3>Documents</h3>
        <h3>Run</h3>
    </div>
</div>  
.menu {
    border: 1px solid black;
    position: relative;
    width: 200px
}

.menu-bar {
    background-color: gray;
    position: absolute;
    left: 0;
    top: 0;
    width: 30px;
    height: 100%;
}

.menu-body h3 {
    border: 1px solid blue;
    line-height: 30px;
    vertical-align: middle;
    margin: 0 0 0 30px;
}

http://jsfiddle.net/Ptp9T/

IE8下没有按照父元素的100%高度显示

==========
有人提示要设置html,body高度为100%,但这不是问题关键。
我的问题是父元素的高度不固定,看我写的jsfiddle的例子,父元素.menu没有指定height,但在chorme、firefox下,内层元素.menu-bar高度设置为100%后,可以和父元素的高度保持一致,但在IE8下就不行。


问题已经找到,根本原因是html文件没有doctype声明,导致IE使用了Quirks模式显示网页。
增加下面的doctype声明后,即使没有设置html,body{height:100%},显示结果也是正常的。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">


父元素也必须设置指定高度,子元素height:100%才有效,上一级元素如果也height:100%的话,那么外公元素也必须设置指定高度,一直往上推直到它们的老祖宗body和html标签,懂不,所以我在写css的时候基本都是先写上

html{height:100%}
body{margin:0;height:100%}
【热门文章】
【热门文章】