CSS Push Div para o final da página
Por favor, olhe para o link, quero o oposto: quando o conteúdo ultrapassa o limite das barras de rolagem, quero que meu rodapé esteja sempre na parte inferior completa da página, como Stack Overflow.
Eu tenho uma div com id="footer"
e este CSS:
#footer {
position: absolute;
bottom: 30px;
width: 100%;
}
Mas tudo o que faz é ir para a parte inferior da janela de visualização e permanecer lá, mesmo se você rolar para baixo, para que não fique mais na parte inferior.
Imagem:
Desculpe, se não esclarecido, não quero que seja corrigido, apenas para estar na parte inferior real de todo o conteúdo.
css
positioning
css-position
footer
H Bellamy
fonte
fonte
position:fixed
, no entanto, que não será exatamente a melhor maneira de fazê-loRespostas:
É exatamente para isso que
position: fixed
foi projetado:Aqui está o violino: http://jsfiddle.net/uw8f9/
fonte
fixed
rodapé, quando há conteúdo suficiente para isso. Isso é bom o suficiente para mim. Obviamente, posso ver como rodapés muito grandes, como o que eles têm no stackoverflow, não funcionariam bem com afixed
abordagem, mas, para um rodapé básico de uma linha, essa abordagem funciona bem na minha opinião.Infelizmente, você não pode fazer isso sem adicionar um pouco de HTML extra e ter um pedaço de CSS dependente de outro.
HTML
Primeiro você precisa envolver seu
header
,footer
e#body
em uma#holder
div:CSS
Em seguida, defina
height: 100%
comohtml
ebody
(corpo real, não sua#body
div) para garantir que você possa definir a altura mínima como uma porcentagem nos elementos filho.Agora, defina
min-height: 100%
a#holder
div para preencher o conteúdo da tela e use-aposition: absolute
para sentar o rodapé na parte inferior da#holder
div.Infelizmente, você deve aplicar-se
padding-bottom
à#body
div que tem a mesma altura que afooter
para garantir quefooter
ela não fique acima de qualquer conteúdo:Exemplo de trabalho, corpo curto: http://jsfiddle.net/ELUGc/
Exemplo de trabalho, corpo longo: http://jsfiddle.net/ELUGc/1/
fonte
width
ou ambosleft
eright
, em seguida, os valores são definidos comoauto
eo elemento será moldado para caber seu conteúdo. Especificandowidth: 100%
ouleft: 0
eright:0
assegurando que o elemento absolutamente posicionado tenha toda a largura do elemento do contêinerheight=100%
em todos os seus elementos contendo, incluindo<form>
elementos.Apenas funcionou para outra solução, como no exemplo acima, tenho um bug (algum erro) para mim. Variação da resposta selecionada.
para layout html
Bem, dessa forma, não há suporte para navegador antigo, no entanto, é aceitável que o navegador antigo role 30px para exibir o rodapé
fonte
Sei que ele diz que não deve ser usado para 'responder a outras respostas', mas infelizmente não tenho representante suficiente para adicionar um comentário à resposta apropriada (!), Mas ...
Se você está tendo problemas no asp.net com a resposta de 'My Head Hurts' - é necessário adicionar 'height: 100%' à tag FORM principal gerada, bem como às tags HTML e BODY para que isso funcione.
fonte
Você não fechou o seu; após posição: absoluto. Caso contrário, o código acima teria funcionado perfeitamente!
fonte
Gostaria de comentar se pudesse, mas ainda não tenho permissões, por isso postarei uma dica como resposta, para um comportamento inesperado em alguns dispositivos Android:
Posição: corrigida funciona apenas no Android 2.1 a 2.3 usando a seguinte metatag:
consulte http://caniuse.com/#search=position
fonte
Esta é uma solução intuitiva usando o comando viewport que apenas define a altura mínima para a altura da viewport menos a altura do rodapé.
fonte
Resolvi um problema semelhante colocando todo o meu conteúdo principal em uma tag div extra (id = "outer"). Em seguida, movi a tag div com id = "footer" para fora dessa última tag div "externa". Eu usei CSS para especificar a altura de "externo" e especifiquei a largura e a altura do "rodapé". Também usei CSS para especificar a margem esquerda e a margem direita do "rodapé" como automático. O resultado é que o rodapé fica firmemente na parte inferior da página e rola com a página também (embora ainda apareça dentro da div "externa", mas felizmente fora da div principal "conteúdo". O que parece estranho, mas é onde eu quero).
fonte
Eu só quero acrescentar - a maioria das outras respostas funcionou bem para mim; no entanto, demorou muito tempo para fazê-los funcionar!
Isso ocorre porque a configuração
height: 100%
apenas pega a altura da div pai!Portanto, se todo o seu html (dentro do corpo) se parecer com o seguinte:
Então, o seguinte ficará bem:
... como "suporte" pegará sua altura diretamente do "corpo".
Parabéns ao My Head Hurts, cuja resposta foi a que acabei por começar a trabalhar!
Contudo. Se o seu html estiver mais aninhado (porque é apenas um elemento da página inteira, ou está dentro de uma determinada coluna, etc.), você precisa garantir que todos os elementos contidos também tenham sido
height: 100%
definidos na div. Caso contrário, as informações de altura serão perdidas entre "corpo" e "suporte".Por exemplo, a seguir, onde adicionei a classe "altura total" a todas as div para garantir que a altura desça até os elementos de cabeçalho / corpo / rodapé:
E lembre-se de definir a altura na classe de altura total no css:
Isso corrigiu meus problemas!
fonte
se você tem um rodapé de altura fixa (por exemplo, 712px), é possível fazer isso com js da seguinte forma:
fonte
fonte
use a classe de inicialização de fundo fixo
fonte