2012-04-11 121 views
2

我有一个安装程序,需要填充100%的屏幕,边距为10px。在里面,顶部有一个导航窗格,后面跟着一个内容div,内容是填充,内部内容是填充。但是,使用父级的100%高度,然后添加一个边距/填充可将div延伸至100%+边距+填充。有没有解决这个问题?我注意到了绝对定位技巧,但是如果我绝对放置我的内容div,则会扰乱其他div的流动。它也使调整和流动非液体。任何方式来保持这些东西,仍然实现我的目标,最好用CSS而不是JavaScript?填充高度100%

下面的代码:

ASPX

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head> 
    <title>Untitled Page</title> 
    <link rel="Stylesheet" href="test.css" /> 
</head> 
<body> 
    <div id="wrapper"> 
     <div id="navigation"> 
     </div> 
     <div id="content"> 
      <div id="inner"> 

      </div> 
     </div> 
    </div> 
</body> 
</html> 

CSS

html, body 
{ 
    height:100%; 
    width:100%; 
    margin:0px; 
    padding:0px; 
    background-color:Black; 
} 
#wrapper 
{ 
    height:100%; 
    margin:10px; 
    background-color:Blue; 
} 
#navigation 
{ 
    height:100px; 
    background-color:Green; 
} 
#content 
{ 
    height:100%; 
    padding:10px; 
    background-color:Orange; 
} 
#inner 
{ 
    height:100%; 
    width:100%; 
    padding:5px; 
    background-color:Lime; 
} 
+0

而不是设置上'wrapper'保证金的,你可以设置'对身体padding'? – mrtsherman 2012-04-11 14:47:51

+0

@mrtsherman它仍然拉伸大于html父元素的body元素。 – steventnorris 2012-04-11 14:50:51

+0

尝试设置包装的边距为% – IrishChieftain 2012-04-11 14:54:40

回答

0

您可以尝试两件事情......

1)改变包装,导航的高度,内容和内心达到98%。

2)尝试添加一个透明的1px固体边框到包装和其他元素。这通常会将边缘转换为元素的边缘关系。

希望这有助于

+0

如果您将填充填入%,98%也可以工作。否则,您可以确定有人会发现这种情况无法可靠地发挥作用! – 2012-04-11 14:59:06

+0

1)即使使用填充作为%,仍会产生偏移/伸展问题。 2)边框还增加了拉伸效果,所以基本上与边距/填充相同。 – steventnorris 2012-04-11 15:07:55

14

你可以尝试添加box-sizing:border-box到要拥有100%的高度和填充在同一时间的任何元素。

工程在IE8 +和良好的浏览器,所以浏览器的支持还算是不错的

http://css-tricks.com/box-sizing/

+0

我希望。我正在开发IE7。我忽略了上面提到的。谢谢你。如果我处在一个更好的环境中,那将会有用。 – steventnorris 2012-04-11 14:57:13

+0

这太好了。我没有意识到框的大小:在IE8中支持边框。我非常厌倦了不合逻辑的默认方框模式以及完成看似简单的事情所需的包装DIV数量。我将从现在开始将这个箱子模态应用于所有元素。 – Gavin 2013-06-14 09:21:55