100% расширяемый контейнерный блок с внешним полем - PullRequest
1 голос
/ 28 июля 2011

У меня вопрос о том, как это сделать.

Мне нужен контейнер 100% ширины, 100% высоты с полем 20 пикселей, который расширяется с содержимым. Это вообще возможно? Ближайший, который я получил, был с этим методом:

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

но тогда он не будет увеличиваться по высоте с содержанием.

Кто-нибудь знает божественную технику для этого?

Ответы [ 4 ]

3 голосов
/ 28 июля 2011

Я почти уверен, что это невозможно сделать с одним элементом, но если вы не возражаете против трех элементов 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/

0 голосов
/ 28 июля 2011
<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 ... посмотрите модель окна.

0 голосов
/ 28 июля 2011

Если вы хотите расширить div содержимым, то вам нужно установить положение: относительное и для того, чтобы придерживаться нижнего отступа, также необходимо установить.

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

}

Значения могут быть скорректированы в соответствии с требованием.Попробуйте здесь

0 голосов
/ 28 июля 2011

Уберите 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/

...