IE6、7下如何设置页面内部件高度和窗口等高(heihgt:100%)

Several members here at Webmaster World have asked if there was a method to assign 100% height to <div>'s used as left and/or right navigation menus. In some cases, members also wished to assign background-images to their div's that would always display at 100% of the resized browser window.

Most attempts to accomplish this were made by assigning the property and value: div{height:100%} - this alone will not work. The reason is that without a parent defined height, the div{height:100%;} has nothing to factor 100% percent of, and will default to a value of div{height:auto;} - auto is an "as needed value" which is governed by the actual content, so that the div{height:100%} will a=only extend as far as the content demands.

The solution to the problem is found by assigning a height value to the parent container, in this case, the body element. Writing your body stlye to include height 100% supplies the needed value.

body {
margin:0;
padding:0;
height:100%;
}

Now when height:100%; is applied to divs (or other elements) contained withing the body, the height percentage has a containing (body) value to work with.

The following example is a three column, liquid layout with 100% height assigned to both flanking divs. Background images can be assigned to these divs and will render at 100% of the window height.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
<head>
<title>One Hundred Percent height Divs</title>
<style type="text/css" media="screen">
body {
margin:0;
padding:0;
height:100%; /* this is the key! */
}
#left {
position:absolute;
left:0;
top:0;
padding:0;
width:200px;
height:100%; /* works only if parent container is assigned a height value */
color:#333;
background:#eaeaea;
border:1px solid #333;
}
.content {
margin-left:220px;
margin-right:220px;
margin-bottom:20px;
color:#333;
background:#ffc;
border:1px solid #333;
padding:0 10px;
}
#right {
position:absolute;
right:0;
top:0;
padding:0;
width:200px;
height:100%; /* works only if parent container is assigned a height value */
color:#333;
background:#eaeaea;
border:1px solid #333;
}

#left p {
padding:0 10px;
}
#right p {
padding:0 10px;
}
p.top {
margin-top:20px;
}
</style>
</head>

<body>
<div id="left">
<p class="top">This design uses a defined body height of 100% which allows setting the
contained left and right divs at 100% height.</p>

<p>This design uses a defined body height of 100% which allows setting the contained left and
right divs at 100% height.</p>

<p>This design uses a defined body height of 100% which allows setting the contained left and
right divs at 100% height.</p>
</div>

<div class="content">
<p>This design uses a defined body height which of 100% allows setting the contained left and
right divs at 100% height.</p>
</div>

<div class="content">
<p>This design uses a defined body height which of 100% allows setting the contained left and
right divs at 100% height.</p>
</div>

<div class="content">
<p>This design uses a defined body height which of 100% allows setting the contained left and
right divs at 100% height.</p>
</div>

<div id="right">
<p class="top">To solve an inheritance issue displayed in div #right as rendered in Opera, class p.top
using margin-top:20; is applied to the first paragraph of each outer divs.</p>

<p>This design uses a defined body height which of 100% allows setting the contained left and
right divs at 100% height.</p>

<p>This design uses a defined body height which of 100% allows setting the contained left and
right divs at 100% height.</p>
</div>
</body>
</html>

Tiling backgrounds may also be deployed:

#right {
position:absolute;
right:0;
top:0;
padding:0;
width:200px;
height:100%; /* works only parent container is assigned a height value */
color:#333;
background:url(images/mytile.gif) repeat;
border:1px solid #333;
}

The above three column layout will not display properly in Netscape 4.x because of the position:absolute; right:0; styles of the div #right. A three column liquid layout was used for demonstration purposes, the 100% height can be applied as required.

Remember to protect Netscape 4 from styles it cannot understand by using the @import rule.

The above has been tested in Opera6, IE6, and Mozilla 1.1 - it should work in most modern browsers.

Have fun!

XHTML + css + WebStandards = FREEDOM!

- papabaer ;)

你可能感兴趣的:(ie6)