У меня есть эти вложенные элементы div, и мне нужно, чтобы основной контейнер расширялся (по высоте), чтобы вместить DIV внутри
<!-- head -->
...
<!-- /head -->
<body class="main">
<div id="container">
<div id="header">
<!--series of divs in here, graphic banner etc. -->
</div>
<div id="main_content"> <!-- this DIV _should_ stretch to accommodate inner divs -->
<div id="items_list" class="items_list ui-sortable">
<div id="item_35" class="item_details">
</div>
<div id="item_36" class="item_details">
</div>
<div id="item_37" class="item_details">
</div>
<!-- this list of DIVs "item_xx" goes on for a while
each one representing a photo with name, caption etcetc -->
</div>
</div>
<br class="clear"/>
<div id="footer">
</div>
</body>
</html>
CSS это:
* {
padding: 0;
margin: 0;
}
.main {
font: 100% Verdana, Arial, Helvetica, sans-serif;
background: #4c5462;
margin: 0;
padding: 0;
text-align: center;
color: #000000;
}
.main #container {
height: auto;
width: 46em;
background: #4c5462;
margin: 0 auto;
border: 0px solid #000000;
text-align: left;
}
.main #main_content {
padding: 5px;
margin: 0px;
}
#items_list {
width: 400px;
float: left;
}
.items_list {
width: 400px;
float: left;
}
.item_details {
margin-top: 3px;
margin-bottom: 3px;
padding: 3px;
float: left;
border-bottom: 0.5px solid blue;
}
У меня проблема в том, что #main_content
она не растягивается, чтобы вместить все внутренние элементы, в результате чего они продолжают идти на фоне.
Как я могу решить эту проблему, учитывая вышеописанный сценарий?
<strong>Edited</strong>$Reason_for_revising_question...
Вас, возможно, потребуется изменить заголовок вопроса, чтобы отразить изменения, если в фокусе есть значительное изменение или дополнение. =)div
тег сid='container'
. Это может вызвать некоторые проблемы..clear
класса. Вы забыли это, или это в вашем оригинальном коде?.clear
Класс на том , чтоbr
очень важно , так как @jennyfofenny упоминает в своем ответе.Ответы:
Вам нужно форсировать a
clear:both
до#main_content
закрытия div. Я, вероятно, переместил бы<br class="clear" />;
в#main_content
div и установил бы CSS следующим образом:Обновление: этот вопрос все еще получает достаточное количество трафика, поэтому я хотел обновить ответ с помощью современной альтернативы, использующей новый режим макета в CSS3, который называется «Гибкие блоки» или «Flexbox» :
Большинство современных браузеров в настоящее время поддерживают модули Flexbox и viewport , но если вам необходимо поддерживать более старые браузеры, обязательно проверьте совместимость для конкретной версии браузера.
источник
Попробуй это:
overflow: auto;
Это сработало для моей проблемы ..
источник
display: block;
с нимдобавить следующее:
к вашему главному div. Устраняет необходимость в дополнительном
<br />
для чистых.источник
в качестве альтернативного способа вы также можете попробовать это, что может быть полезно в некоторых ситуациях
jsFiddle
источник
Я бы просто использовал
в вашем div. Да, я знаю, что немного опоздал, но я подумал, что это могло бы помочь кому-то, как это помогло бы мне, если бы оно было здесь.
источник
height: auto;
заставляет все пункты ниже перемещаться к вершине. С этим свойством в моем основном содержимом div нижний колонтитул моей страницы перемещается вверх, так что он касается заголовка и перекрывает мой контент div.Следующее должно работать:
источник
Очень простой способ
На родительском DIV:
height: 100%;
Это работа для меня каждый раз
источник
Используйте тег span с
display:inline-block
css, прикрепленным к нему. Затем вы можете использовать CSS и манипулировать им как div разными способами, но если вы не включитеwidth
илиheight
расширяете и убираете его в зависимости от его содержимого.Надеюсь, это поможет.
источник
div
(вместоspan
), ноdisplay: inline-block
все еще работал в моем случае (Chromium).Обычно я думаю, что это может быть решено путем применения
clear:both
правила для последнего дочернего элемента#items_list
.Вы можете использовать:
Или, если вы используете динамический язык, добавьте дополнительный класс к последнему элементу, сгенерированному в любом цикле, создающем сам список, так что в итоге вы получите что-то в своем html, например:
и CSS
источник
Эта проблема возникает, когда всплывают дочерние элементы родительского Div. Вот последнее решение проблемы:
В своем CSS-файле напишите следующий класс с именем .clearfix вместе с псевдо-селектором : after
Затем в своем HTML добавьте класс .clearfix к родительскому элементу Div. Например:
Это должно работать всегда. Вы можете назвать имя класса как .group вместо .clearfix , так как это сделает код более семантическим. Обратите внимание, что нет необходимости добавлять точку или даже пробел в значение Content между двойными кавычками "". Также переполнение: авто;может решить проблему, но это вызывает другие проблемы, такие как показ полосы прокрутки и не рекомендуется.
Источник: блог Лизы Каталано и Криса Койера
источник
добавьте свойство float в
#main_content
div - оно будет расширяться, чтобы содержать его плавающее содержимоеисточник
Прежде чем что-либо делать, проверьте правила CSS с:
Удалить, если есть и не нужны.
источник
Плавающие элементы не занимают место внутри родительского элемента, как следует из названия, они плавают! Таким образом, если высота явно не указана для элемента, у которого всплывают дочерние элементы, то родительский элемент будет казаться сжатым и не принимать размеры дочернего элемента, даже если его заданные дочерние элементы
overflow:hidden;
могут не отображаться на экране. Есть несколько способов справиться с этой проблемой:Вставьте другой элемент ниже плавающего элемента со
clear:both;
свойством или используйтеclear:both;
on:after
плавающего элемента.Используйте
display:inline-block;
илиflex-box
вместоfloat
.источник
Похоже, это работает
Он принимает размер экрана как минимум, а если контент расширяется, он увеличивается.
источник
В CSS:
#clear_div{clear:both;}
После тега div внутреннего div добавьте этот новый следующий div
http://www.w3schools.com/cssref/pr_class_clear.asp : для получения дополнительной информации
источник
Я добавил Bootstrap в проект с
section
тегами, которые я установил на 100% высоты экрана. Он работал хорошо , пока я не сделал проект отзывчивый, в какой момент я заимствовал часть jennyfofenny «s ответ чтобы фон моего раздела соответствовал фону контента, когда размер экрана менялся на меньших экранах.Мой новый
section
CSS выглядит так:Допустим, у вас есть раздел определенного цвета. При использовании
min-height
, если ширина раздела уменьшается из-за меньшего размера экрана, высота раздела будет увеличиваться, содержимое останется в пределах раздела, а фон будет иметь нужный цвет.источник
Вы пробовали традиционный способ? дать основную высоту контейнера: авто
Я использовал это, и это работало большую часть времени со мной.
источник
Я сам сталкиваюсь с этим в проекте - у меня был стол внутри div, который выливался из нижней части div. Ни одно из исправлений высоты, которые я пробовал, не сработало, но я нашел странное исправление для этого, то есть поместить абзац внизу элемента div с точкой в нем. Затем стиль "цвет" текста должен быть таким же, как фон контейнера. Работал аккуратно, как вам угодно, и никакой JavaScript не требуется. Неразрывный пробел не будет работать - как и прозрачное изображение.
Видимо, просто нужно было увидеть, что под таблицей есть какое-то содержимое, чтобы его можно было растянуть. Интересно, будет ли это работать для кого-то еще.
Это то, что заставляет дизайнеров прибегать к макетам на основе таблиц - количество времени, которое я потратил на то, чтобы разобраться в этом и сделать его совместимым с различными браузерами, сводит меня с ума.
источник
Я попробовал это, и это сработало
источник
Если вы используете пользовательский интерфейс jQuery, у них уже есть класс, который работает просто зачарование, добавьте
<div>
внизу внутри div, который вы хотите расширить,height:auto;
затем добавьте имя класса ui-helper-clearfix или используйте этот атрибут стиля и добавьте, как показано ниже :добавьте класс пользовательского интерфейса jQuery в чистый div, а не в div, который вы хотите расширить.
источник
Я знаю, что это своего рода старый поток, однако, это может быть достигнуто
min-height
чистым способом с помощью свойства CSS, поэтому я оставлю это здесь для будущих ссылок:Я сделал скрипку на основе размещенного кода OP здесь: http://jsfiddle.net/U5x4T/1/ , когда вы будете удалять и добавлять div внутри, вы заметите, как контейнер увеличивается или уменьшается в размере
Единственные две вещи, которые вам нужны для достижения этой цели, в дополнение к коду OP:
* Переполнение в основном контейнере (требуется для плавающих элементов)
* свойство css минимальной высоты, более подробная информация доступна здесь: http://www.w3schools.com/cssref/pr_dim_min-height.asp
источник
Добавлено отображение: встроенное в div, и оно стало автоматически (не для прокрутки), когда высота содержимого стала больше, чем установленная высота div 200px
источник
Вы можете использовать CSS Grid Layout . Поддержка достаточно широкая на данный момент: отметьте ее caniuse .
Вот пример на jsfiddle. Также пример с тоннами текстового материала.
HTML код:
Код CSS:
источник
Я попробовал почти все предложения, перечисленные выше, и ни одно из них не сработало. Однако «display: table» помог мне.
источник
Не нужно использовать много CSS, просто используйте начальную загрузку, а затем используйте:
для div, который должен быть заполнен.
Вы можете получить загрузку здесь
источник