Oto HTML:
<div id="outer">
<div id="inner"></div>
Test
</div>
A oto CSS:
#inner {
float: left;
height: 100%;
}
Po sprawdzeniu za pomocą narzędzi dla programistów Chrome wewnętrzna div uzyskuje wysokość 0 pikseli.
Jak mogę zmusić go do 100% wysokości div rodzica?
Odpowiedzi:
Aby
#outer
wysokość opierała się na jej treści i na tej#inner
podstawie opierała wysokość, należy bezwzględnie ustawić oba elementy.Więcej szczegółów można znaleźć w specyfikacji właściwości css height , ale w zasadzie
#inner
musi ona ignorować#outer
wysokość, jeśli#outer
wysokość jestauto
, chyba że#outer
jest ustawiona absolutnie. Wówczas#inner
wysokość będzie wynosić 0, chyba że#inner
sam jest umieszczony całkowicie.Jednak ... pozycjonując
#inner
absolutnie,float
ustawienie zostanie zignorowane, więc musisz#inner
jawnie wybrać szerokość dla i dodać dopełnienie,#outer
aby sfałszować zawijanie tekstu, które podejrzewam, że chcesz. Na przykład poniżej wypełnienie#outer
ma szerokość#inner
+3. Dogodnie (ponieważ celem było uzyskanie#inner
wysokości do 100%) nie ma potrzeby zawijania tekstu pod spodem#inner
, więc będzie wyglądał tak, jakby#inner
był pływający.Usunąłem moją poprzednią odpowiedź, ponieważ była ona oparta na zbyt wielu błędnych założeniach dotyczących twojego celu.
źródło
HTML/CSS
:)Dla rodzica:
Powinieneś dodać kilka prefiksów http://css-tricks.com/using-flexbox/
Edycja: Jedyną wadą jest IE jak zwykle, IE9 nie obsługuje flex. http://caniuse.com/flexbox
Edycja 2: Jak zauważył @toddsby, wyrównywanie elementów jest dla elementu nadrzędnego, a jego domyślną wartością jest w rzeczywistości rozciągnięcie . Jeśli chcesz mieć inną wartość dla dziecka, istnieje właściwość align-self.
Edycja 3: jsFiddle: https://jsfiddle.net/bv71tms5/2/
źródło
align-items: stretch;
nie jest wymagane, ponieważ jest to wartość domyślna. Należy to również zdefiniować na rodzicu, a nie na dziecku.W rzeczywistości, dopóki element macierzysty jest ustawiony, możesz ustawić wzrost dziecka na 100%. Mianowicie, w przypadku, gdy nie chcesz, aby rodzic był absolutnie ustawiony. Pozwól, że wyjaśnię dalej:
źródło
position:absolute
(który mógłby kolidować ze stylami strony)Tak długo, jak nie potrzebujesz obsługiwać wersji Internet Explorera wcześniejszych niż IE8, możesz tego użyć
display: table-cell
:HTML:
CSS:
Zmusi to każdy element z
.inner
klasą do zajmowania pełnej wysokości elementu nadrzędnego.źródło
display: table-cell;
element nie wypełnia już wysokości swojego pojemnika? Coś mi brakuje, bo to twoje pytanie ...?Zrobiłem przykład rozwiązującego problem.
Musisz zrobić owijkę, unieść ją na wodzie, a następnie ustawić absolutnie div i dać mu 100% wysokości.
HTML
CSS:
Wyjaśnienie: .right div jest absolutnie ustawiony. Oznacza to, że jego szerokość i wysokość oraz górne i lewe pozycje zostaną obliczone na podstawie pierwszego elementu div absolutnie lub względnie pozycjonowanego TYLKO, jeśli właściwości width lub height są wyraźnie zadeklarowane w CSS; jeśli nie są one jednoznacznie zadeklarowane, właściwości te zostaną obliczone na podstawie kontenera nadrzędnego (.right-wrapper).
Zatem 100% wysokości DIV zostanie obliczona na podstawie wysokości końcowej kontenera, a pozycja końcowa pozycji prawej zostanie obliczona na podstawie kontenera rodzica.
źródło
.right
kolumny jest krótsza niż zawartość.left
kolumny. Na przykład, jeśli używasz tego w komponencie, w którym.left
kolumna ma treść o różnych rozmiarach, a prawa kolumna po prostu wyświetla strzałkę do strony szczegółów, to rozwiązanie działa dobrze. +1 za toOto prostszy sposób na osiągnięcie tego:
Dzięki @Itay in Floated div, 100% wysokości
źródło
Jeśli jesteś przygotowany na użycie małej jQuery, odpowiedź jest prosta!
Działa to dobrze w przypadku przestawiania pojedynczego elementu na bok ze 100% wysokością jego elementu nadrzędnego, podczas gdy inne elementy pływające, które normalnie byłyby owijane, są trzymane z jednej strony.
Mam nadzieję, że pomoże to innym fanom jQuery.
źródło
To jest przykładowy kod dla systemu siatki o równej wysokości.
Powyżej znajduje się CSS dla zewnętrznego div
Powyżej jest wewnętrzny div
Mam nadzieję, że ci to pomoże
źródło
To mi pomogło.
Zmień w prawo: i w lewo: aby ustawić preferowaną # szerokość wewnętrzną.
źródło
Podobny przypadek, gdy potrzebujesz kilku elementów potomnych o tej samej wysokości, można rozwiązać za pomocą Flexbox:
https://css-tricks.com/using-flexbox/
Wszystkie elementy ustawione
display: flex;
dla elementów nadrzędnych iflex: 1;
podrzędnych będą miały tę samą wysokość.źródło
próbować
pokaż więcej opcji w: Jak uchronić rodziców elementów pływających przed zapadnięciem się?
źródło