Skip to content

Como usar CSS para definir a altura de um elemento HTML para 100%

24 de abril de 2021

Os valores percentuais em CSS podem ser complicados. Quando você define a propriedade CSS de altura de um elemento como 100%, o que exatamente você está definindo como 100%? Essa é a principal questão com a qual você se depara ao lidar com porcentagens em CSS e, conforme os layouts se tornam mais complexos, fica muito mais difícil controlar as porcentagens, resultando em um comportamento absolutamente bizarro, se você não tomar cuidado. Trabalhar com porcentagens tem uma vantagem distinta; layouts baseados em porcentagem se adaptam automaticamente a diferentes tamanhos de tela. É por isso que usar porcentagens é essencial em um design responsivo. Sistemas de grade populares e estruturas CSS usam valores percentuais para criar suas grades responsivas. Claramente, existem certas situações mais adequadas a valores estáticos e outras que funcionam muito melhor com algo adaptativo, como porcentagens. Você precisará decidir qual rota seguir com os elementos em seu design.

Unidades estáticas

Os pixels são estáticos. Dez pixels em um dispositivo equivalem a dez pixels em cada dispositivo. Claro, existem coisas como densidade e a maneira como um dispositivo realmente interpreta o que é um pixel, mas você nunca verá grandes mudanças porque a tela tem um tamanho diferente. Com CSS, você pode definir facilmente a altura de um elemento em pixels, e ele permanecerá o mesmo. É previsível. div {
altura: 20px;
}

Isso não mudará a menos que você altere com JavaScript ou algo semelhante. Agora, há outro lado dessa moeda. Não vai mudar. Isso significa que você precisará medir tudo com precisão e, mesmo assim, seu site não funcionará em todos os dispositivos. É por isso que as unidades estáticas tendem a funcionar melhor com elementos filhos, mídia e coisas que começarão a distorcer e parecer estranhas se esticarem e crescerem.

Definir a altura de um elemento para 100%

Quando você define a altura de um elemento como 100%, ele se estende a toda a altura da tela? As vezes. O CSS sempre trata os valores percentuais como uma porcentagem do elemento pai.

Sem elemento pai

Se você criou um novo

que está contido apenas na tag do corpo do seu site, 100% provavelmente será igual à altura da tela. A menos que você tenha definido um valor de altura para o .

O HTML:

O CSS:

div {
altura: 100%;
}

Que

a altura do elemento será igual à da tela. Por padrão, o abrange a tela inteira, então essa é a base que seu navegador usa para calcular a altura do elemento.

Com um elemento pai com altura estática

Quando seu elemento está aninhado dentro de outro elemento, o navegador usará a altura do elemento pai para calcular um valor para 100%. Portanto, se o seu elemento estiver dentro de outro elemento que tem uma altura de 100 px, e você definir a altura do elemento filho para 100%. O elemento filho terá 100 pixels de altura.

O HTML:

O CSS:

#parent {
altura: 100px;
}
#filho {
altura: 100%;
}

Elemento CSS com 100% de altura e 20em pai

A altura disponível para o elemento filho é restringida pela altura do pai.

Com um elemento pai com uma altura percentual

Pode parecer contra-intuitivo, mas você pode definir a altura de um elemento como uma porcentagem de uma porcentagem. Quando um elemento possui um elemento pai que também tem sua altura definida como um valor percentual, o navegador usará o mesmo valor do pai, que já foi calculado com base em seu pai. Isso porque 100% de um valor ainda é esse valor.

O CSS:

#parent {
altura: 75%;
}
#filho {
altura: 100%;
}

Altura do elemento CSS 100% em porcentagem do pai

Neste caso, a altura do elemento pai é 75% de toda a tela. A criança, então, também tem 100% da altura total disponível.

Com um elemento pai sem altura

Curiosamente, quando o elemento pai não tem uma altura definida, o navegador continuará subindo nível por nível até encontrar um valor concreto com o qual possa trabalhar. Se chegar até o sem encontrar nada, o navegador assumirá como padrão a altura da tela, dando ao seu elemento uma altura equivalente.

O HTML:

O CSS:

#parent {}
#filho {
altura: 100%;
}

Elemento CSS com 100% de altura e altura pai indefinida

O elemento filho se estende até a parte superior e inferior da tela.

As unidades da janela de visualização

Como o cálculo com unidades de porcentagem pode ser complicado e cada elemento está vinculado a seu pai, há um conjunto de unidades que ignora tudo isso e os tamanhos dos elementos básicos diretamente do espaço disponível na tela. Essas são as unidades da janela de visualização e fornecem um tamanho direto com base na altura ou largura da tela, não importando onde o elemento esteja localizado. Para definir o de um elemento altura igual à altura da tela, defina seu valor de altura para 100vh. div {
altura: 100vh;
}

Elemento CSS com altura da janela de visualização e pai definido

É fácil quebrar seu layout fazendo isso, e você precisa estar ciente de quais outros elementos serão afetados, mas a janela de visualização é de longe a maneira mais direta de definir a altura de um elemento para 100% da tela.