Eu estou tentando definir um <div>
para uma certa altura percentual em CSS, mas ele permanece o mesmo tamanho que o conteúdo dentro dele. Quando eu removo o HTML 5 <!DOCTYTPE html>
, no entanto, ele funciona, <div>
ocupando a página inteira conforme desejado. Quero que a página valide, então o que devo fazer?
Eu tenho esse CSS no <div>
, que tem um ID de page
:
#page {
padding: 10px;
background-color: white;
height: 90% !important;
}
height
propriedade com valores percentuais: stackoverflow.com/a/31728799/3597276Respostas:
Porcentagem de quê?
Para definir uma altura percentual, seu elemento pai (*) deve ter uma altura explícita. Isso é bastante evidente, pois se você deixar a altura como
auto
, o bloco terá a altura do seu conteúdo ... mas se o conteúdo em si tiver uma altura expressa em termos de porcentagem do pai ou da mãe, você ficará um pouco Captura 22. O navegador desiste e apenas usa a altura do conteúdo.Portanto, o pai da div deve ter uma
height
propriedade explícita . Embora essa altura também possa ser uma porcentagem, se você quiser, isso apenas move o problema para o próximo nível.Se você deseja tornar a altura da div uma porcentagem da altura da janela de exibição, todos os ancestrais da div, incluindo
<html>
e<body>
, precisam terheight: 100%
, para que haja uma cadeia de alturas de porcentagem explícitas até a div.(*: ou, se a div estiver posicionada, o 'bloco contendo', que é o ancestral mais próximo a ser posicionado também.)
Como alternativa, todos os navegadores modernos e o IE> = 9 oferecem suporte a novas unidades CSS relativas à altura da porta de visualização (
vh
) e largura da porta de visualização (vw
):Veja aqui para mais informações .
fonte
Você precisa definir a altura nos elementos
<html>
e<body>
também; caso contrário, eles serão grandes o suficiente para caber no conteúdo. Por exemplo :fonte
A resposta de bobince informará em quais casos "height: XX%;" vai ou não vai funcionar.
Se você deseja criar um elemento com uma proporção definida (altura:% de sua própria largura), a melhor maneira de fazer isso é definindo efetivamente a altura usando
padding-bottom
. Exemplo para quadrado:O contêiner quadrado será feito apenas de preenchimento e o conteúdo será expandido para preenchê-lo. Artigo longo de 2009 sobre este assunto: http://alistapart.com/article/creating-intrinsic-ratios-for-video
fonte
Você pode usar
100vw / 100vh
. CSS3 nos fornece unidades relativas à janela de visualização. 100vw significa 100% da largura da janela de visualização. 100vh; 100% da altura.fonte
Em outro caso, para se livrar dessa porcentagem pai definidora, você pode usar
corpo {altura: 100vh}
vh significa altura da janela de visualização
Eu acho que ajuda
fonte
Às vezes, convém definir condicionalmente a altura de uma div, como quando todo o conteúdo é menor que a altura da tela. Definir todos os elementos pai como 100% cortará o conteúdo quando for maior que o tamanho da tela.
Portanto, a maneira de contornar isso é definir a altura mínima:
Continue permitindo que os elementos pai ajustem automaticamente sua altura. Em sua div principal, subtraia os tamanhos de pixel da div de cabeçalho e rodapé de 100vh (unidades de janela de visualização). Em css, algo como:
altura mínima: calc (100vh - 246px);
100vh é o comprimento total da tela, menos os divs circundantes. Ao definir altura mínima e não altura, o conteúdo maior que a tela continuará fluindo, em vez de ser cortado.
fonte