具有外边距的 100% 可扩展容器 div
Posted
技术标签:
【中文标题】具有外边距的 100% 可扩展容器 div【英文标题】:100% expandable container div with outside margin 【发布时间】:2011-10-15 01:51:53 【问题描述】:我有一个令人费解的问题。
我需要一个 100% 宽、100% 高的容器,其边距为 20 像素,可随内容扩展。这是可能吗?我得到的最接近的是这种方法:
#container
position:absolute;
top:0;
bottom:0px;
left:0;
right:0;
margin:20px;
但它不会随着内容的增加而扩大高度。
有人知道这方面的神术吗?
【问题讨论】:
我无法完全想象您的要求。你能解释更多吗? 是的。我需要一个 div,它的高度为 100%,宽度为 100%,但周围的空间宽度为 20px。像这样:manual.businesstool.dk/screen.jpg 让我知道,如果这没有帮助? :P 【参考方案1】:我很确定不可能使用单个元素,但如果您不介意使用 3 个分隔符 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/
【讨论】:
您的原始解决方案 (jsfiddle.net/dTyTW) 甚至可以在 IE6 中使用,但是当内容很少时,您更新的解决方案在所有浏览器中都会失败。你应该恢复到原来的解决方案,我认为这正是 OP 正在寻找的。span> @thirydot heh 我只测试了 chrome 中的更新版本。恢复到以前。感谢您的提醒! 这就像一个魅力!非常有创意的工作 ;) 为没有 js 竖起大拇指,它适用于所有浏览器。谢谢!【参考方案2】:如果你想用内容扩展 div,那么你需要设置 position : relative 并且为了坚持底部 padding-bottom 也需要设置。
#container
position:relative;
top:20px;
bottom:20px;
left:20px;
right:20px;
padding-bottom: 80%;
border:1px solid red;
可以根据需要调整值。 试试here
【讨论】:
这也不起作用,它会扩展到窗口之外,即使它是空的。这不是意图:)【参考方案3】:删除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/
【讨论】:
你是对的,@Esben。这仅在内容已经是屏幕高度的 100% 或更多时才有效。 如果内容小于屏幕高度的 100%,请参见上面的编辑。 嘿,我确实用 jQuery 临时修复了它,但它让我很吃惊,我不能在纯 css 中做到这一点,这就是我开始这个线程的原因。【参考方案4】:<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>
使用 padding 属性...查找盒子模型。
【讨论】:
以上是关于具有外边距的 100% 可扩展容器 div的主要内容,如果未能解决你的问题,请参考以下文章