CSS百分比定义高度的问题
CSS百分比定义高度的问题css中,百分比的高度在设定时需要根据这个元素的父元素容器的高度。所以,如果你把一个li的高度设定为height: 50%;,而它的父元素的高度是100px,那么,这个li的高度应该是50px。
Web浏览器在计算有效高度时,浏览器根本就不计算内容的高度,除非内容超出了视窗范围(导致滚动条出现)。或者你给整个页面设置一个绝对高度。否则,浏览器就会简单的让内容往下堆砌,页面的高度根本就无需考虑。
因为页面并没有缺省的高度值,所以,当你让一个元素的高度设定为百分比高度时,无法根据获取父元素的高度,也就无法计算自己的高度。换句话说,父元素的高度只是一个缺省值:height: auto;。当你要求浏览器根据这样一个缺省值来计算百分比高度时,只能得到undefined的结果。也就是一个null值,浏览器不会对这个值有任何的反应。
例如
<style type="text/css">
body {
margin: 0;
padding: 0;
border: 0;
background-color: #EFECE6;
}
#content {
width: 958px;
height: 100%;
border-left: solid 1px #c00;
border-right: solid 1px #c00;
background-color: #fff;
margin: 0 auto;
padding: 0 1em 0 1em;
font: 12px/1.5 Verdana;
}
#content h1 {
color: #3e3e3e;
font: 22px/1.2 Georgia;
margin: 0;
padding: 0;
}
#content h2 {
color: #4d4a42;
font: 14px/1.3 Verdana;
margin: 0;
padding: 0;
}
</style>
<body>
<li id="content">
<h1>Height 100%—Not Working</h1>
<h2>Example</h2>
<p id="by">
</p>
<p>
The CSS <code>height</code> property can be frustrating to use, because, especially if you are setting heights as a percentage of the browser window, they don't always work.
</p>
<p>
For example, this page you are on currently has a height set to this main content <code>li</code> of 100%, but as you can see, it is not filling up the entire page. Instead it is filling up only the amount of space that this text takes up.
</p>
<p>
learn how to get your elements to fill up the full height of a browser window.
</p>
</li>
</body>
上面的例子是父元素没有设定固定高度,于是子元素的高度height: 100% 也不会起作用。