Aqui está o HTML:
<div id="outer">
<div id="inner"></div>
Test
</div>
E aqui está o CSS:
#inner {
float: left;
height: 100%;
}
Após a inspeção com as ferramentas de desenvolvedor do Chrome, a div interna está recebendo uma altura de 0px.
Como posso forçar 100% da altura da div principal?
Respostas:
Para que a
#outer
altura se baseie em seu conteúdo e tenha como#inner
base sua altura, deixe ambos os elementos absolutamente posicionados.Mais detalhes podem ser encontrados na especificação da propriedade css height , mas essencialmente
#inner
devem ignorar a#outer
altura se#outer
a altura forauto
, a menos que#outer
esteja absolutamente posicionado. A#inner
altura será 0, a menos que#inner
ela esteja posicionada absolutamente.No entanto ... Ao posicionar
#inner
absolutamente, umafloat
configuração será ignorada; portanto, você precisará escolher uma largura#inner
explicitamente e adicionar preenchimento#outer
para falsificar o texto que eu suspeito que você deseja. Por exemplo, abaixo, o preenchimento de#outer
é a largura de#inner
+3. Convenientemente (como o objetivo principal era aumentar a#inner
altura para 100%), não há necessidade de quebrar o texto abaixo#inner
; portanto, isso parecerá#inner
flutuar.Excluí minha resposta anterior, pois ela se baseava em muitas suposições erradas sobre seu objetivo.
fonte
HTML/CSS
:)Para o pai:
Você deve adicionar alguns prefixos http://css-tricks.com/using-flexbox/
Edit: Apenas a desvantagem é o IE, como de costume, o IE9 não suporta flex. http://caniuse.com/flexbox
Editar 2: como observou o @toddsby, os itens de alinhamento são para pai e seu valor padrão é na verdade esticado . Se você deseja um valor diferente para filho, há propriedade auto-alinhada.
Edit 3: jsFiddle: https://jsfiddle.net/bv71tms5/2/
fonte
align-items: stretch;
não é necessário, pois é o valor padrão. Também deve ser definido no pai e não no filho.Na verdade, desde que o elemento pai esteja posicionado, você pode definir a altura da criança para 100%. Ou seja, caso você não queira que o pai esteja absolutamente posicionado. Deixe-me explicar mais:
fonte
position:absolute
(o que poderia interferir com estilos de um site)Desde que você não precise oferecer suporte a versões do Internet Explorer anteriores ao IE8, você pode usar
display: table-cell
para fazer isso:HTML:
CSS:
Isso forçará cada elemento da
.inner
classe a ocupar toda a altura do seu elemento pai.fonte
display: table-cell;
elemento não preenche mais a altura de seu contêiner? Devo estar faltando alguma coisa, porque é sua própria pergunta ...?Fiz um exemplo para resolver seu problema.
Você precisa criar um invólucro, flutuar, posicionar sua div absoluta e dar 100% de altura.
HTML
CSS:
Explicação: A div .right está absolutamente posicionada. Isso significa que sua largura e altura, e as posições superior e esquerda serão calculadas com base na primeira div pai absolutamente ou em posição relativa SOMENTE se as propriedades de largura ou altura forem explicitamente declaradas em CSS; se não forem declaradas explicitamente, essas propriedades serão calculadas com base no contêiner pai (.right-wrapper).
Portanto, a altura de 100% do DIV será calculada com base na altura final do recipiente e a posição final da posição correta será calculada com base no contêiner pai.
fonte
.right
conteúdo da coluna seja mais curto que o.left
conteúdo da coluna. Por exemplo, se você estiver usando isso em um componente no qual a.left
coluna possui algum conteúdo de tamanho variável e a coluna da direita simplesmente exibir uma seta para uma página de detalhes, essa solução funcionará bem. +1 para issoAqui está uma maneira mais simples de conseguir isso:
Graças a @Itay em div flutuado , 100% de altura
fonte
Se você está preparado para usar um pouco de jQuery, a resposta é simples!
Isso funciona bem para flutuar um único elemento para um lado com 100% de altura do seu pai, enquanto outros elementos flutuantes que normalmente envolvem são mantidos em um lado.
Espero que isso ajude outros fãs do jQuery.
fonte
Este é um exemplo de código para o sistema de grade com altura igual.
Acima está o CSS para div externo
Acima é a div interna
Espero que isso ajude você
fonte
Isso me ajudou.
Mude para a direita: e para a esquerda: para definir a largura do #nerner preferível.
fonte
Um caso semelhante quando você precisa de vários elementos filhos com a mesma altura pode ser resolvido com o flexbox:
https://css-tricks.com/using-flexbox/
Definidos
display: flex;
para elementos pai eflex: 1;
filho, todos terão a mesma altura.fonte
experimentar
mostre mais opções em: Como você evita que os pais de elementos flutuantes entrem em colapso?
fonte