Estou usando o Bootstrap 3 para um site que estou criando.
Eu quero ter um rodapé como este exemplo. Amostra
Observe que eu não o quero CORRIGIDO, para que o bootstrap navbar-fixed-bottom não resolva o meu problema. Eu só quero que ele esteja sempre na parte inferior do conteúdo e também seja responsivo.
Qualquer guia será muito apreciado.
EDITAR:
Desculpe se eu não estava claro. O que acontece agora é que, quando o corpo do conteúdo não possui conteúdo suficiente. Meu rodapé se move para cima e depois deixa um espaço vazio na parte inferior.
Isto é o que tenho agora para a minha barra de navegação
<nav class="navbar navbar-inverse navbar-bottom" style="padding:0 0 120px 0">
<div class="container">
<div class="row">
<div class="col-sm-4">
<h5 id='footer-header'> SITEMAP </h3>
<div class="col-sm-4" style="padding: 0 0 0 0px">
<p>News</p>
<p>contact</p>
</div>
<div class="col-sm-4" style="padding: 0 0 0 0px">
<p>FAQ</p>
<p>Privacy Policy</p>
</div>
</div>
<div class="col-sm-4">
<h5 id='footer-header'> xxxx </h3>
<p>yyyyyyyyyyyyy</p>
</div>
<div class="col-sm-4">
<h5 id='footer-header'> xxxxx </h3>
<p>uuuuuuuuuuuuuuu</p>
</div>
</div>
</div>
</nav>
CSS
.navbar-bottom {
min-height: 300px;
margin-top: 100px;
background-color: #28364f;
padding-top: 35px;
color:#FFFFFF;
}
html
css
twitter-bootstrap
footer
user3169403
fonte
fonte
Respostas:
Veja o exemplo abaixo. Isso posicionará o rodapé para ficar na parte inferior se a página tiver menos conteúdo e se comportar como um rodapé normal se a página tiver mais conteúdo.
CSS
HTML
ATUALIZAÇÃO : A nova versão do Bootstrap demonstra como adicionar rodapé fixo sem adicionar um wrapper. Consulte a resposta de Jboy Flaga para obter mais detalhes.
fonte
Há uma solução simplificada do bootstrap aqui (onde você não precisa criar uma nova classe): http://getbootstrap.com/examples/sticky-footer-navbar/
Quando você abrir essa página, clique com o botão direito do mouse em um navegador e em "View Source" e abra o arquivo sticky-footer-navbar.css ( http://getbootstrap.com/examples/sticky-footer-navbar/sticky-footer-navbar. css )
você pode ver que você só precisa desse CSS
para este HTML
fonte
use o flexbox, pois você pode usá-lo à sua disposição. A solução oferecida pelo bootstrap 4 ainda está procurando conteúdo sobreposto no layout responsivo, por exemplo: ele será interrompido na exibição móvel, o truque mais interessante é usar a demonstração da solução flexbox mostrada aqui :( https://philipwalton.github.io / resolvido por flexbox / demos / sticky-footer / ) dessa forma, não precisamos lidar com o problema de altura fixa, que é uma solução obsoleta até agora ... essa solução funciona para o bootstrap 3 e 4, conforme o que você estiver usando.
fonte
ATUALIZAÇÃO: Isso não responde diretamente à pergunta na íntegra, mas outros podem achar isso útil.
Este é o HTML do seu rodapé responsivo
Para o CSS
NOTA: No momento da postagem desta pergunta, as linhas de código acima não pressionam o rodapé abaixo do conteúdo da página; mas evitará que o rodapé rastreie no meio da página quando houver pouco conteúdo na página. Para um exemplo que empurra o rodapé abaixo do conteúdo da página, dê uma olhada aqui http://getbootstrap.com/examples/sticky-footer/
fonte
padding-bottom
contêiner de conteúdo principal igual à altura do rodapé. E você precisa fazer isso dinamicamente na páginaload
e nosresize
eventos e também no rodapéDOMSubtreeModified
.Para as pessoas que ainda lutam e a solução respondida não funciona exatamente como você deseja, aqui está a solução mais simples que encontrei.
Embrulhe seu conteúdo principal e atribua a ele uma altura mínima de exibição. Ajuste os 60 para o valor que seu estilo precisar.
É isso e funciona muito bem.
fonte
Galen Gidman postou uma solução realmente boa para o problema de um rodapé pegajoso responsivo que não tem uma altura fixa. Você pode encontrar a solução completa em seu blog: http://galengidman.com/2014/03/25/responsive-flexible-height-sticky-footers-in-css/
HTML
CSS
fonte
Para uma solução CSS pura, role após a 2ª
<hr>
. A primeira é a resposta inicial (devolvida em 2016)A principal falha das soluções acima é que elas têm uma altura fixa para o rodapé.
E isso simplesmente não funciona no mundo real, onde as pessoas usam um zilhão de dispositivos e têm o mau hábito de girá-los quando você menos espera e ** Poof! ** lá vai o conteúdo da página por trás do rodapé!
No mundo real, você precisa de uma função que calcule a altura do rodapé e ajuste dinamicamente o conteúdo da página
padding-bottom
para acomodar essa altura. E você precisa executar esta pequena função na páginaload
e nosresize
eventos, bem como no rodapéDOMSubtreeModified
(apenas no caso de o rodapé ser atualizado dinamicamente de forma assíncrona ou conter elementos animados que mudam de tamanho quando interagidos).Aqui está uma prova de conceito, usando jQuery
v3.0.0
e Bootstrapv4-alpha
, mas não há razão para que ele não funcione nas versões inferiores de cada um.Mostrar snippet de código
Inicialmente, publiquei esta solução aqui, mas percebi que ela pode ajudar mais pessoas se postada nesta pergunta.
Nota: Eu tenho propositadamente embrulhou o
$([selector]).accomodateFooter()
como um plugin jQuery, para que pudesse ser executado em qualquer elemento DOM, como na maioria dos layouts não é o$('body')
'sbottom-padding
que as necessidades de ajuste, mas alguma página invólucro elemento composition:relative
(geralmente o pai imediato dofooter
) .Edição posterior (mais de 3 anos após a resposta inicial):
Neste ponto, não considero mais aceitável o uso do JavaScript para posicionar um rodapé de conteúdo dinâmico na parte inferior da página. Isso pode ser alcançado apenas com CSS, usando flexbox, extremamente rápido e em vários navegadores.
Aqui está:
Mostrar snippet de código
fonte
Este método usa marcação mínima. Basta colocar todo o seu conteúdo em um .wrapper que tenha um fundo de preenchimento e um fundo de margem negativo igual à altura do rodapé (no meu exemplo, 100px).
fonte
Ou isto
fonte
Para o Bootstrap:
fonte
navbar-fixed-bottom
NÃO é o que resolve o problema.Nenhuma dessas soluções funcionou perfeitamente para mim porque usei a classe navbar-reverse no rodapé. Mas recebi uma solução que funcionava e sem Javascript. Utilizou o Chrome para ajudar na formação de consultas de mídia. A altura do rodapé muda à medida que a tela é redimensionada, assim você deve prestar atenção e ajustar em conformidade. O conteúdo do seu rodapé (defino id = "rodapé" para definir meu conteúdo) deve usar postion = absolute e bottom = 0 para mantê-lo na parte inferior. Também largura: 100%. Aqui está o meu CSS com consultas de mídia. Você precisará ajustar a largura mínima e a largura máxima e adicionar ou remover alguns elementos:
fonte
Isto é o que funcionou para mim usando o Flexbox :
Fonte: https://philipwalton.github.io/solved-by-flexbox/demos/sticky-footer/
fonte