Powiększ wysokość div wraz z jego zawartością
Mam te zagnieżdżone Div I potrzebuję głównego kontenera, aby rozszerzyć (w wysokości), aby pomieścić Div wewnątrz
<!-- 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 jest taki:
* {
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;
}
Problem, który mam jest to, że #main_content
nie rozciągają się, aby pomieścić wszystkie wewnętrzne div, z wynikiem, że nadal idą w tle.
Jak mogę rozwiązać ten problem biorąc pod uwagę powyższy scenariusz?
25 answers
Musisz wymusić clear:both
przed zamknięciem #main_content
div. Prawdopodobnie przeniosłbym <br class="clear" />;
do #main_content
div i ustawił CSS na:
.clear { clear: both; }
Update: to pytanie wciąż dostaje sporą ilość ruchu, więc chciałem zaktualizować odpowiedź z nowoczesną alternatywą za pomocą nowy tryb układu w CSS3 o nazwie Flexbox lub Flexbox :
body {
margin: 0;
}
.flex-container {
display: flex;
flex-direction: column;
min-height: 100vh;
}
header {
background-color: #3F51B5;
color: #fff;
}
section.content {
flex: 1;
}
footer {
background-color: #FFC107;
color: #333;
}
<div class="flex-container">
<header>
<h1>
Header
</h1>
</header>
<section class="content">
Content
</section>
<footer>
<h4>
Footer
</h4>
</footer>
</div>
Większość nowoczesnych przeglądarek obsługuje obecnie Flexbox i viewport jednostki, ale jeśli musisz utrzymać wsparcie dla starszych przeglądarek, upewnij się, aby sprawdzić zgodność dla konkretnej wersji przeglądarki.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-04 21:02:42
Spróbuj tego:
overflow: auto;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-11 14:02:45
Dodać:
overflow:hidden;
height:1%;
Do twojego głównego div. Eliminuje potrzebę dodatkowego <br />
dla klarowności.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-23 00:11:53
Jako alternatywny sposób możesz również spróbować tego, co może być przydatne w niektórych sytuacjach
display:table;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-20 05:51:53
Użyłbym tylko
height: auto;
W Twoim div. Tak, Wiem, że jestem trochę spóźniona, ale pomyślałem, że to może pomóc komuś takiemu jak mnie, gdyby to było tutaj.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-07 02:16:18
THW następujące powinny działać:
.main #main_content {
padding: 5px;
margin: 0px;
overflow: auto;
width: 100%; //for some explorer browsers to trigger hasLayout
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-10 16:55:57
Bardzo prosty sposób
On parent DIV:
height: 100%;
To działa dla mnie za każdym razem
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55
Użyj znacznika span z dołączonym display:inline-block
css. Możesz następnie użyć CSS i manipulować nim jak div na wiele sposobów, ale jeśli nie dołączysz width
lub height
, rozszerza się i wycofuje na podstawie jego zawartości.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-06 11:06:11
Zazwyczaj myślę, że można to rozwiązać wymuszając regułę clear:both
na ostatnim elemencie potomnym #items_list
.
Możesz użyć:
#items_list:last-child {clear: both;}
Lub, jeśli używasz dynamicznego języka, dodaj dodatkową klasę do ostatniego elementu wygenerowanego w dowolnej pętli, która sama utworzy listę, więc skończysz z czymś w html, na przykład:
<div id="list_item_20" class="last_list_item">
I css
.last_list_item {clear: both; }
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-16 19:45:23
Ten problem pojawia się, gdy elementy potomne rodzica Div są unoszone. Oto najnowsze rozwiązanie problemu:
W pliku CSS wpisz następującą klasę o nazwie .clearfix wraz z pseudo selektorem : Po
.clearfix:after {
content: "";
display: table;
clear: both;
}
Następnie w Twoim HTML dodaj .clearfix class to your parent Div. Na przykład:
<div class="clearfix">
<div></div>
<div></div>
</div>
Powinno działać zawsze. Możesz wywołać nazwę klasy jako .Grupa zamiast .clearfix , jako to uczyni kod bardziej semantycznym.
Zauważ, że nie jest konieczne dodawanie kropki ani nawet spacji w wartości Content pomiędzy podwójnym cudzysłowem"". Ponadto, overflow: auto; może rozwiązać problem, ale powoduje inne problemy, takie jak wyświetlanie paska przewijania i nie jest zalecane.
źródło: Blog Lisy Catalano i Chrisa Coyiera
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-07 09:14:11
Przed zrobieniem czegokolwiek sprawdź reguły css z:
{ position:absolute }
Usuń, jeśli istnieją i nie są potrzebne.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-28 22:46:14
Dodaj właściwość float do #main_content
div - zostanie ona rozszerzona o zawartość float
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-07 09:13:33
Wygląda na to, że to działa
html {
width:100%;
height:auto;
min-height:100%
}
Pobiera rozmiar ekranu jako minimum, a jeśli zawartość się rozszerza, rośnie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-24 18:23:44
Elementy pływające nie zajmują przestrzeni wewnątrz elementu nadrzędnego, jak sama nazwa wskazuje, pływają! Tak więc, jeśli wysokość nie jest jawnie zapewniona elementowi, którego elementy potomne są unoszone, to Element nadrzędny będzie się zmniejszał i wydawał się nie akceptować wymiarów elementu potomnego, również jeśli jego podane overflow:hidden;
jego dzieci mogą nie być wyświetlane na ekranie. Istnieje wiele sposobów radzenia sobie z tym problemem:
Wstaw inny element pod pływającym elementem z właściwością
clear:both;
, lub użyćclear:both;
na:after
elementu pływającego.Użyj
display:inline-block;
lubflex-box
zamiastfloat
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-04 08:56:08
Próbowałeś tradycyjnego sposobu? podaj wysokość głównego kontenera: auto
#container{height:auto}
Używałem tego i to działało większość razy ze mną.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-03 15:19:13
W CSS: #clear_div{clear:both;}
Po znaczniku div wewnętrznego div dodaj ten nowy po div
<div id="clear_div"></div>
Http://www.w3schools.com/cssref/pr_class_clear.asp : Więcej informacji
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-25 00:35:10
Dodałem Bootstrap do projektu z tagami section
, które ustawiłem na 100% wysokości ekranu. Działał dobrze, dopóki nie uczyniłem projektu responsywnym, w którym to momencie pożyczyłem część jennyfofenny 's answer więc moje tło sekcji dopasowane tło treści, gdy rozmiar ekranu zmienił się na mniejszych ekranach.
Mój Nowy section
CSS wygląda tak:
section {
// min-height so it looks good on big screen
// but resizes on a small-screen
min-height: 100%;
min-height: 100vh;
width:100%;
width:100vh;
}
Powiedzmy, że masz sekcję, która ma określony kolor. Używając min-height
, jeśli szerokość odcinka zmniejsza się z powodu mniejszego ekranu, wysokość sekcji zostanie rozszerzona, zawartość pozostanie w sekcji, a tło pozostanie pożądanym kolorem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:45
Wpadam na to w projekcie - miałem stół wewnątrz div, który wylewał się z dna div. Żadna z poprawek wysokości, które próbowałem, nie zadziałała, ale znalazłem dziwną poprawkę na to, a mianowicie umieszczenie akapitu na dole div z tylko kropką w nim. Następnie Ustaw "kolor" tekstu tak, aby był taki sam jak tło kontenera. Pracował schludnie, jak chcesz i nie wymaga javascript. Nietłukąca się przestrzeń nie zadziała , podobnie jak przezroczysty obraz.
Najwyraźniej po prostu trzeba było zobaczyć, że pod tabelą znajduje się jakaś treść, aby rozciągnąć ją, aby ją pomieścić. Zastanawiam się, czy to zadziała na kogoś innego.
To jest coś, co sprawia, że projektanci uciekają się do układów opartych na tabelach - ilość czasu, jaki spędziłem na wymyślaniu tych rzeczy i uczynieniu ich kompatybilnymi z przeglądarką, doprowadza mnie do szaleństwa.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-20 21:19:05
Próbowałem tego i zadziałało
<div style=" position: absolute; direction: ltr;height:auto; min-height:100%"> </div>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-26 11:54:46
Jeśli używasz jQuery UI, mają już klasę, która działa tylko urok
dodaj <div>
na dole wewnątrz div, który chcesz rozwinąć za pomocą height:auto;
następnie dodaj nazwę klasy ui-helper-clearfix lub użyj tego atrybutu stylu i dodaj tak jak poniżej:
<div style=" clear:both; overflow:hidden; height:1%; "></div>
Dodaj klasę jQuery UI do clear div, a nie div, który chcesz rozwinąć.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-28 03:16:12
Wiem, że to trochę stary wątek, jednak można to osiągnąć za pomocą min-height
właściwości CSS w czysty sposób, więc zostawię to tutaj dla przyszłych odniesień:
Zrobiłem skrzypce na podstawie kodu OP zamieszczonego tutaj: http://jsfiddle.net/U5x4T/1 / , gdy usuniesz i dodasz div wewnątrz, zauważysz, jak kontener rozszerza się lub zmniejsza rozmiar
Jedyne 2 rzeczy, których potrzebujesz, aby to osiągnąć, dodatkowe do kodu OP to:
*przepełnienie w głównym pojemniku (wymagane dla pływających divów)
* właściwość css min-height, więcej informacji dostępnych tutaj: http://www.w3schools.com/cssref/pr_dim_min-height.asp
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-07 18:02:32
Dodano display: inline do div I rosło automatycznie (nie przewijanie), gdy zawartość wysokości wzrosła wtedy ustawiona wysokość div 200px
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-09 10:53:15
Możesz użyć CSS Grid Layout . Wsparcie jest w tej chwili dość szerokie: sprawdź to na caniuse .
Oto przykład na jsfiddle. Również przykład {[4] } z tonami tekstu.
Kod HTML:
<div class="container">
<div class="header">
Header
</div>
<div class="content">
Content
</div>
<div class="footer">
Footer
</div>
</div>
Kod CSS:
html, body {
width: 100%;
height: 100%;
margin: 0;
}
.container {
width: 100%;
height: 100%;
display: grid;
grid-template-rows: 100px auto 150px;
grid-template-columns: auto;
}
// style stuff
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-15 00:26:40
Próbowałem prawie wszystkich sugestii wymienionych powyżej i żadna z nich nie zadziałała. Jednak "display: table" zrobił dla mnie trick.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-05 14:34:04
Nie trzeba używać dużo CSS, wystarczy użyć bootstrap, a następnie użyć:
class="container"
Dla div, który należy wypełnić.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-21 11:27:37