2011-08-09 23 views
12

Mam sytuację, w której staram się, aby element zajmował 100% wysokości jego kontenera - a element kontenera ma tylko minimalną wysokość. Niestety, kiedy to zrobię, dyrektywa wysokości zostanie zignorowana. Here is an example. "B" div, czerwony, powinien wypełnić cały rodzic. Nie, nie w IE7, Chrome ani FF3.6.CSS 100% wysokość pojemnika z min-wysokości

Gdybym miał "wysokość: 1 piksel" do pojemnika, "a" div, a następnie "b" jest rozciągnięty na całą wysokość "a". See here. Ale to tylko w FF3.6 i IE7, a nie w Chrome. Więc myślę, że robię coś złego tutaj.

Mam wrażenie, że jest to powszechny problem, który musi być rozwiązaniem, którego po prostu nie widzę. Jaki jest najlepszy sposób, aby osiągnąć w tym przypadku rozciąganie do wysokości?

+0

Kontener nadrzędny musi mieć określoną wysokość. Nie tylko minimalna wysokość. – Kyle

Odpowiedz

11

Twój CSS oznacza, że ​​wysokość elementu podrzędnego wynosi 100% określonej wysokości elementu nadrzędnego. Jeśli nie określisz wysokości dla rodzica, to 100% nic nie znaczy. Dlatego to nie działa.

Co chcesz może być osiągnięty za pomocą position:relative na rodzica i position:absolute na dziecko:

http://jsfiddle.net/57EZn/25/

To nie jest piękny, ale rozwiązanie to nie to, czego po.

+0

Ach, tak, jak pamiętam, ten hack jest czasami używany do naprawiania innych problemów z układem. Próbowałem grać z regułą pozycji, ale nie mogłem znaleźć właściwej kombinacji. Logicznie nie rozumiem, dlaczego ustawienie pozycji powinno zmienić wysokość wewnętrznego div, ale najwyraźniej działa i być może będę mógł skorzystać z tego rozwiązania. Dzięki. – waxwing

+0

To nie tylko "position: absolute" sprawia, że ​​zmienia się wysokość. Wysokość jest zmieniana przez określony "wierzchołek" I "dół". Zmusza to element podrzędny do "przywiązania" się do górnych i dolnych pozycji, które określasz jako WZGLĘDNE dla jego rodzica. 'bottom: 0' w tym przypadku oznacza" najniższy możliwy w obrębie rodzica ". Innymi słowy: "rozmiar do wysokości twojego rodzica". – Bazzz

+0

Teraz to rozumiem. Innymi słowy, działa to również, gdy usunę dyrektywę "height: 100%" z wewnętrznego div, ponieważ góra i dół wykonują pracę. – waxwing