Eu quero fazer com que o corpo tenha 100% da altura do navegador. Posso fazer isso usando CSS?
Eu tentei configurar height: 100%
, mas não funciona.
Quero definir uma cor de plano de fundo para que uma página preencha toda a janela do navegador, mas se a página tiver pouco conteúdo, recebo uma barra branca feia na parte inferior.
Respostas:
Tente definir a altura do elemento html para 100% também.
O corpo procura em seu pai (HTML) como dimensionar a propriedade dinâmica; portanto, o elemento HTML também precisa ter sua altura definida.
No entanto, o conteúdo do corpo provavelmente precisará mudar dinamicamente. Definir altura mínima para 100% alcançará esse objetivo.
fonte
body {min-height}
versão, não poderá usar o.body-child{height: 100%}
truque.vh
->body { height: 100vh }
- resposta de verificação aqui stackoverflow.com/a/25829844/2680216Como alternativa para definir as alturas do elemento
html
e , você também pode usar comprimentos de porcentagem da porta de visualização.body
100%
Nesse caso, você pode usar o valor
100vh
- que é a altura da janela atual.Exemplo Aqui
Isso é suportado na maioria dos navegadores modernos - o suporte pode ser encontrado aqui .
fonte
margin: 0;
para evitar uma barra de rolagem vertical persistente à direita.Se você tiver uma imagem de plano de fundo, convém definir isso:
Isso garante que sua tag body possa continuar crescendo quando o conteúdo for mais alto que a viewport e que a imagem de plano de fundo continue repetindo / rolar / o que for quando você começar a rolar para baixo.
Lembre-se, se você precisar dar suporte ao IE6, precisará encontrar uma maneira de se envolver com o
height:100%
corpo,height
como o IE6 tratamin-height
.fonte
body{min-height: 100vh}
body { height: auto; }
que as barras de rolagem não sejam mostradas no FireFox. Fora isso, funciona perfeitamente.Se você deseja manter as margens no corpo e não deseja barras de rolagem, use o seguinte css:
A configuração
body {min-height:100%}
fornecerá barras de rolagem.Veja a demonstração em http://jsbin.com/aCaDahEK/2/edit?html,output .
fonte
height: auto;
nabody
cláusula e também para que as barras de rolagem sejam exibidas agora.fonte
Depois de testar vários cenários, acredito que esta é a melhor solução:
É dinâmico em que as
html
e osbody
elementos irá expandir automaticamente se o seu conteúdo estouro. Testei isso na versão mais recente do Firefox, Chrome e IE 11.Veja o violino completo aqui (para seus inimigos de mesa por aí, você sempre pode alterá-lo para usar uma div):
https://jsfiddle.net/71yp4rh1/9/
Com isso dito, há vários problemas com as respostas postadas aqui .
O uso do CSS acima fará com que o html e o elemento body NÃO se expandam automaticamente se o conteúdo exceder, como mostrado aqui:
https://jsfiddle.net/9vyy620m/4/
Ao rolar, observe o fundo repetitivo? Isso está acontecendo porque a altura do elemento do corpo NÃO aumentou devido ao transbordamento da tabela filho. Por que não se expande como qualquer outro elemento de bloco? Não tenho certeza. Eu acho que os navegadores lidam com isso incorretamente.
Definir uma altura mínima de 100% no corpo, como mostrado acima, causa outros problemas. Se você fizer isso, não poderá especificar que uma div ou tabela filha ocupe uma altura percentual, conforme mostrado aqui:
https://jsfiddle.net/aq74v2v7/4/
Espero que isso ajude alguém. Eu acho que os navegadores estão lidando com isso incorretamente. Eu esperaria que a altura do corpo se ajustasse automaticamente a crescer cada vez mais se seus filhos transbordassem. No entanto, isso não parece acontecer quando você usa 100% de altura e 100% de largura.
fonte
height: 100vh
não é uma solução também. Definir o contêiner superior como100vh
alto e100vw
pode causar problemas se o contêiner tiver barras de rolagem - ele será maior do que deveria (e poderá fazer com que as barras de rolagem fiquem visíveis desnecessariamente). Osheight: 100vh
problemas também causados por nós na mais recentes dispositivos Android (por exemplo Xiaomi Mi 9 com Android 9), onde o contentor seria maior do que a própria tela, e faria barra de rolagem vertical desnecessária para o corpo do documento.O que eu uso no início de literalmente todos os arquivos CSS que uso é o seguinte:
A margem de 0 garante que os elementos HTML e BODY não estejam sendo posicionados automaticamente pelo navegador para ter algum espaço à esquerda ou à direita deles.
O preenchimento de 0 garante que os elementos HTML e BODY não estejam empurrando automaticamente tudo dentro deles para baixo ou para a direita devido aos padrões do navegador.
As variantes de largura e altura são definidas como 100% para garantir que o navegador não as redimensione, na expectativa de ter uma margem ou preenchimento de configuração automática, com min e max definidos apenas no caso de acontecer algo estranho e inexplicável, embora você provavelmente não precisa deles.
Esta solução também significa que, como eu fiz quando eu comecei em HTML e CSS há vários anos, você não tem que dar seu primeiro
<div>
amargin:-8px;
fazê-lo caber no canto da janela do navegador.Antes de postar, olhei para meu outro projeto de CSS em tela cheia e descobri que tudo o que eu havia usado era apenas
body{margin:0;}
nada e mais, que funcionou bem nos dois anos em que trabalhei nele.Espero que esta resposta detalhada ajude, e sinto sua dor. A meu ver, é estúpido que os navegadores definam um limite invisível no lado esquerdo e, às vezes, no lado superior dos elementos body / html.
fonte
width: 100%
elementos body e html? Sim, eu entendo que, do ponto de vista prático,body { margin: 0; }
deve ser suficiente na maioria dos casos. Eu só quero entender melhor.Uma atualização rápida
Uma solução melhor com o CSS atual
fonte
overflow: auto
aqui faz a mágica. Btw eu uso o Chrome.Aqui:
fonte
Você também pode usar JS, se necessário
fonte
Tentar
fonte
width: 100%
elementos body e html? Sim, eu entendo que, do ponto de vista prático,body { margin: 0; }
deve ser suficiente na maioria dos casos. Eu só quero entender melhor.Por favor, checar isto:
Ou tente o novo método Altura da janela de visualização:
Janela de visualização: se o uso da janela de visualização significa que o tamanho do conteúdo da tela chegará à altura máxima da tela.
fonte
width: 100%
elementos body e html?Se você não deseja editar o seu próprio arquivo CSS e definir as regras de altura por conta própria, as estruturas CSS mais comuns também resolvem esse problema com o elemento body preenchendo a totalidade da página, entre outros problemas, à vontade com vários tamanhos de viewports.
Por exemplo, a estrutura CSS tácita resolve esse problema imediatamente, onde você não precisa definir nenhuma regra e classe CSS e apenas inclui o arquivo CSS em seu HTML.
fonte
Funciona para todos os principais navegadores: FF, Chrome, Opera, IE9 +. Funciona com imagens e gradientes de fundo. As barras de rolagem estão disponíveis conforme a necessidade do conteúdo.
fonte
Eu usaria isso
O navegador usará
min-height: 100vh
e, de alguma forma, o navegador for um pouco mais antigomin-height: 100%
, será o substituto.A
overflow: auto
é necessário se você quiser que o corpo e html para expandir a sua altura quando redimensionar o ecrã (para um tamanho celular, por exemplo)fonte
Somente com 1 linha de CSS… Você pode fazer isso.
fonte
100vh
Na verdade, não é o que você espera do iOS Safari.todas as respostas são 100% corretas e bem explicadas, mas fiz algo bom e muito simples para torná-lo responsivo.
aqui, o elemento terá 100% da porta de altura de visualização, mas quando se trata da visualização móvel, não fica bem, especialmente na visualização em retrato (móvel); portanto, quando a porta de visualização está diminuindo, o elemento entra em colapso e se sobrepõe. então, para torná-lo pouco responsivo, aqui está o código. espero que alguém obtenha ajuda com isso.
Aqui está a demonstração do JSfiddle.
fonte
Aqui Atualização
fonte
Sobre o espaço extra na parte inferior: sua página é um aplicativo ASP.NET? Nesse caso, provavelmente há quase tudo na sua marcação. Não se esqueça de estilizar o formulário também. Adicionar
overflow:hidden;
ao formulário pode remover o espaço extra na parte inferior.fonte
fonte
width: 100%
elementos body e html? Sim, eu entendo que, do ponto de vista prático,body { margin: 0; }
deve ser suficiente na maioria dos casos. Eu só quero entender melhor.CSS3 tem um novo método.
Torna o ViewPort 100% igual à altura.
Portanto, seu código deve ser
fonte