100%可扩展的容器div与外边距

时间:2011-07-28 12:03:39

标签: css height width margin

我有一个令人头疼的问题。

我需要一个100%宽,100%高的容器,20px的边距随内容扩展。这是可能吗?我得到的最接近的是这种方法:

#container {
    position:absolute;
    top:0;
    bottom:0px;
    left:0;
    right:0;
    margin:20px;
}

但随后内容不会扩大。

有人知道神圣的技术吗?

4 个答案:

答案 0 :(得分:3)

我很确定单个元素是不可能的,但是如果你不介意有3个spacer div元素,这个解决方案适用于所有浏览器:

<html>
<head>
<style type="text/css">
* {
    margin: 0;
}
html, body {
    height: 100%; padding: 0; /* padding 0 is for jsfiddle */
}
#wrapper {
    min-height: 100%;
    height: auto !important;
    height: 100%;
    margin-left: 20px;
    margin-right: 20px;
    margin-bottom: -20px; /* the bottom margin is the negative value of the spacer height */
    background-color: #ccc;
}
.spacer.edge {
    background-color: white; /* same as body background */ 
}
.spacer {
    height: 20px;
 }

</style>
</head>
<body>
    <div id="wrapper">
        <div class="spacer edge"></div>
        <!-- content here -->
        <div class="spacer"></div>
    </div>
    <div class="spacer edge"></div>
</body>
</html>

这是一个小提琴:http://jsfiddle.net/dTyTW/

答案 1 :(得分:0)

移除margin并为每个位置20px

同时删除bottom

添加padding-bottom:20px;

#container {
    position:absolute;
    top:20px;
    left:20px;
    right:20px;
    padding-bottom:20px; 
}

http://jsfiddle.net/jasongennaro/w7dQP/3/

修改

如果你不反对使用某些jQuery,你也可以这样做

var h = $(document).height();
var h2 = $('#container').height();

if(h2 < h){
    $('#container').height(h);
}

这可确保如果div小于浏览器视口,它将展开以适应它。

一旦文字大或大,样式就会照顾它。

http://jsfiddle.net/jasongennaro/w7dQP/8/

答案 2 :(得分:0)

我想用内容扩展div,然后你需要设置位置:相对而且为了坚持底部填充底部也需要设置。

#container {
position:relative;
top:20px;
bottom:20px;
left:20px;
right:20px;
padding-bottom: 80%;
border:1px solid red;

}

可根据要求调整值。 试试here

答案 3 :(得分:0)

<html>
<style>
body
{
  margin:0px;
}
div
{
  position: absolute;
  padding: 20px;
}
img
{
  position: relative;
  width: 100%;
}
</style>
<body>
  <div>
    <img src="http://manual.businesstool.dk/screen.jpg" />
  </div>
</body>
</html>

使用填充属性...查找框模型。