Mam te zagnieżdżone div i potrzebuję głównego kontenera, aby rozwinął się (na 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 to:
* {
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, polega na tym, #main_content
że nie rozciąga się, aby pomieścić wszystkie wewnętrzne div, w wyniku czego nadal działają na tle.
Jak mogę rozwiązać ten problem, biorąc pod uwagę powyższy scenariusz?
<strong>Edited</strong>$Reason_for_revising_question...
Być może trzeba zmienić tytuł pytania, aby odzwierciedlić zmiany, jeśli w jego centrum znajduje się poważna zmiana lub uzupełnienie. =)div
tagu za pomocąid='container'
. To może powodować pewne problemy..clear
klasy. Zapomniałeś o tym, czy jest w twoim oryginalnym kodzie?.clear
Klasa na tobr
jest bardzo ważne, ponieważ @jennyfofenny wspomina w swojej odpowiedzi.Odpowiedzi:
Musisz wymusić a
clear:both
zanim#main_content
div zostanie zamknięty. Prawdopodobnie przeniósłbym div<br class="clear" />;
do#main_content
div i ustawiłem CSS na:Aktualizacja: To pytanie wciąż generuje spory ruch, więc chciałem zaktualizować odpowiedź za pomocą nowoczesnej alternatywy przy użyciu nowego trybu układu w CSS3 o nazwie Elastyczne pudełka lub Flexbox :
Większość współczesnych przeglądarek obsługuje obecnie Flexboksa i jednostki rzutni , ale jeśli musisz utrzymać obsługę starszych przeglądarek, sprawdź zgodność dla konkretnej wersji przeglądarki.
źródło
Spróbuj tego:
overflow: auto;
To zadziałało dla mojego problemu ..
źródło
display: block;
tododaj następujące:
do twojego głównego div. Eliminuje potrzebę dodatkowych
<br />
dla wyczyszczenia.źródło
jako alternatywny sposób możesz spróbować tego, co może być przydatne w niektórych sytuacjach
jsFiddle
źródło
Chciałbym po prostu użyć
w twojej div. Tak, wiem, że jestem trochę spóźniony, ale pomyślałem, że to mogłoby pomóc komuś takiemu, gdyby mi tu był.
źródło
height: auto;
powoduje przejście wszystkich elementów poniżej na górę. Dzięki tej właściwości na moim głównym div treści, stopka mojej strony przesuwa się w górę, tak że dotyka nagłówka i nakłada się na moją div treści.Thw powinny działać:
źródło
Bardzo prosty sposób
Na rodzicielskim DIV:
height: 100%;
Ta praca dla mnie za każdym razem
źródło
Użyj tagu span z
display:inline-block
dołączonym css. Następnie można użyć CSS i manipulować jak div na wiele sposobów, ale jeśli nie zawierająwidth
aniheight
nie rozszerza się i wycofuje się na podstawie jego treści.Mam nadzieję, że to pomaga.
źródło
div
(zamiast aspan
), aledisplay: inline-block
nadal działałem w moim przypadku (Chromium).Zazwyczaj myślę, że można to rozwiązać poprzez wymuszenie
clear:both
reguły na ostatnim elemencie potomnym elementu#items_list
.Możesz użyć:
Lub, jeśli używasz języka dynamicznego, dodaj dodatkową klasę do ostatniego elementu wygenerowanego w dowolnej pętli, która tworzy samą listę, aby uzyskać coś w html, na przykład:
i css
źródło
Ten problem powstaje, gdy elementy potomne rodzica div są unoszone na wodzie. Oto najnowsze rozwiązanie problemu:
W swoim pliku CSS napisz następującą klasę o nazwie .clearfix wraz z pseudo selektorem : after
Następnie w kodzie HTML dodaj klasę .clearfix do rodzica Div. Na przykład:
Powinno zawsze działać. Możesz wywołać nazwę klasy jako .group zamiast .clearfix , ponieważ dzięki temu kod będzie bardziej semantyczny. Należy pamiętać, że nie trzeba dodawać kropki ani nawet spacji w wartości Treści między podwójnym cudzysłowem „”. Również przepełnienie: automatyczne; może rozwiązać problem, ale powoduje inne problemy, takie jak wyświetlanie paska przewijania i nie jest zalecane.
Źródło: Blog Lisa Catalano i Chris Coyier
źródło
dodaj właściwość float do
#main_content
div - następnie rozszerzy się, aby zawrzeć jego pływającą zawartośćźródło
Zanim cokolwiek zrobisz, sprawdź reguły css za pomocą:
Usuń, jeśli istnieją i nie potrzebujesz ich.
źródło
Elementy pływające nie zajmują przestrzeni w elemencie macierzystym, jak sama nazwa sugeruje, że się unoszą! Zatem jeśli wysokość nie zostanie wyraźnie podana elementowi, którego elementy potomne są unoszone, wówczas element macierzysty będzie się kurczył i będzie wyglądał, jakby nie przyjmował wymiarów elementu potomnego, również jeśli podane elementy
overflow:hidden;
potomne mogą nie pojawić się na ekranie. Istnieje wiele sposobów rozwiązania tego problemu:Wstawić kolejny element poniżej elementu powierzchnia tynku z
clear:both;
własności lub użytkowaniaclear:both;
na:after
elementu powierzchnia tynku.Użyj
display:inline-block;
lubflex-box
zamiastfloat
.źródło
Wygląda na to, że to działa
Przyjmuje rozmiar ekranu jako minimalny, a jeśli zawartość się powiększa, rośnie.
źródło
W CSS:
#clear_div{clear:both;}
Po znaczniku div wewnętrznego div dodaj ten nowy następujący div
http://www.w3schools.com/cssref/pr_class_clear.asp : aby uzyskać więcej informacji
źródło
Dodałem Bootstrap do projektu ze
section
znacznikami, które ustawiłem na 100% wysokości ekranu. To działało dobrze aż zrobiłem projekt czuły, przy której pożyczyłem część jennyfofenny „s odpowiedź więc tło mojej sekcji pasowało do tła treści, gdy rozmiar ekranu zmieniał się na mniejszych ekranach.Mój nowy
section
CSS wygląda następująco:Załóżmy, że masz sekcję w określonym kolorze. Używając
min-height
, jeśli szerokość sekcji zmniejsza się z powodu mniejszego ekranu, wysokość sekcji będzie się powiększać, zawartość pozostanie w obrębie sekcji, a tło pozostanie pożądanym kolorem.źródło
Czy wypróbowałeś tradycyjny sposób? podaj wysokość głównego pojemnika: auto
Użyłem tego i działało to ze mną przez większość czasu.
źródło
Sam wpadam na ten projekt - miałem stolik wewnątrz div, który wysypywał się z dołu div. Żadna z poprawek wysokości, które próbowałem, nie zadziałała, ale znalazłem dziwną poprawkę, a mianowicie umieszczenie akapitu na dole div z tylko kropką. Następnie nadaj styl „kolorowi” tekstu, aby był taki sam jak tło kontenera. Działa schludnie, jak chcesz, i nie wymaga javascript. Nieprzerwana przestrzeń nie będzie działać - podobnie jak przezroczysty obraz.
Najwyraźniej po prostu trzeba było zobaczyć, że pod tabelą jest trochę treści, aby ją rozciągnąć. Zastanawiam się, czy to zadziała dla kogokolwiek innego.
Jest to coś, co sprawia, że projektanci uciekają się do układów opartych na tabelach - ilość czasu, którą spędziłam na opracowywaniu tych rzeczy i dostosowywaniu ich do różnych przeglądarek, doprowadza mnie do szału.
źródło
Próbowałem tego i zadziałało
źródło
Jeśli używasz jQuery UI, mają już klasę, działa po prostu urok, dodaj
<div>
u dołu wewnątrz div, który chcesz rozwinąć, aheight:auto;
następnie dodaj nazwę klasy ui-helper-clearfix lub użyj tego atrybutu stylu i dodaj tak, jak poniżej :dodaj klasę jQuery UI do clear div, a nie div, który chcesz rozwinąć.
źródło
Wiem, że jest to trochę stary wątek, ale można to osiągnąć za pomocą
min-height
właściwości CSS w czysty sposób, więc zostawię to tutaj do przyszłych odniesień:Zrobiłem skrzypce na podstawie kodu opublikowanego tutaj tutaj: http://jsfiddle.net/U5x4T/1/ , gdy usuwasz i dodajesz divy wewnątrz, zauważysz, jak pojemnik się powiększa lub zmniejsza
Jedyne 2 rzeczy, które musisz to osiągnąć, oprócz kodu OP to:
* Przepełnienie w głównym kontenerze (wymagane dla pływających div)
* właściwość css o minimalnej wysokości, więcej informacji dostępnych tutaj: http://www.w3schools.com/cssref/pr_dim_min-height.asp
źródło
Dodano wyświetlanie: wbudowane w div i rosło automatycznie (nie przewijać), gdy zawartość wysokości stała się większa niż ustawiona wysokość div 200px
źródło
Możesz użyć układu siatki CSS . Wsparcie jest obecnie dość szerokie: sprawdź to w kajaku .
Tutaj jest przykład na jsfiddle. Również przykład z mnóstwem tekstów.
Kod HTML:
Kod CSS:
źródło
Próbowałem prawie wszystkich wyżej wymienionych sugestii i żadna z nich nie działała. Jednak „display: table” załatwiło sprawę.
źródło
Nie musisz używać dużo CSS, po prostu użyj bootstrap, a następnie użyj:
dla div, który musi być wypełniony.
Możesz dostać bootstrap stąd
źródło