76 votes

Faire en sorte que le pied de page reste en bas de la page à l'aide de Twitter Bootstrap

J'ai quelques pages Web qui n'ont pas beaucoup de contenu et le pied de page se trouve au milieu de la page, mais je veux qu'il soit en bas.

J'ai mis toutes mes pages dans un "support".

#holder {
  min-height: 100%;
  position:relative;
}

Puis j'ai utilisé le CSS suivant pour mon pied de page

ul.footer {
  margin-top: 10px;
  text-align: center;
}

ul.footer li {
  color: #333;
  display: inline-block;
}

#footer {
  bottom: -50px;
  height: 50px;
  left: 0;
  position: absolute;
  right: 0;
}

Le html pour mon pied de page

<div class="container">
  <div class="row">
    <div class="span12">
      <div id="footer">
        <ul class="footer">
          <li>Website built by <a href="#">Fishplate</a></li>&nbsp;&nbsp;
          <li>Email:exampleemail@gmail.com</li>
        </ul>
      </div>
    </div>
  </div>
</div>

Je voudrais que le pied de page reste fluide.

1 votes

La position absolue de votre pied de page dépend entièrement de la taille des divisions du conteneur. Ainsi, s'il n'y a pas de contenu dans le conteneur, celui-ci se termine probablement quelque part au milieu de la page et votre pied de page se positionne 50px en dessous.

0 votes

Merci pour la réponse, quelle serait la solution pour contourner ce problème ?

0 votes

Soit vous positionnez votre pied de page à l'extérieur du div du conteneur, soit vous forcez le conteneur à avoir une hauteur totale.

97voto

Jon Points 1003

Ajoutez simplement la classe navbar-fixed-bottom à votre pied de page.

<div class="footer navbar-fixed-bottom">

Mise à jour pour Bootstrap 4 -

comme mentionné par Sara Tibbetts - la classe est à fond fixe

<div class="footer fixed-bottom">

12 votes

Cela a créé un pied de page figé, avec du contenu défilant en dessous. Est-ce que quelque chose m'échappe ? Merci.

0 votes

Le pied de page reste collé au bas de l'écran, si c'est ce que vous entendez par "gelé". Sur un petit écran, il affichera le pied de page même si le contenu se chevauche. Tout dépend si vous voulez toujours afficher le pied de page.

0 votes

Il est également bon de noter que si vous avez généré un dom JS ng-repeat en angulaire ... il faudra mettre margin-bottom sur le wrapper des éléments générés égale à la hauteur du sticky footer ... bootstrap met une marge supérieure sur le footer mais la marge supérieure ne s'appliquera pas au dom généré et vous vous retrouverez avec le bas de votre dom généré sous le footer.

44voto

My Head Hurts Points 16980

Comme indiqué dans les commentaires, vous avez basé votre code sur cette solution : https://stackoverflow.com/a/8825714/681807

L'un des éléments clés de cette solution est l'ajout de height: 100% a html, body donc le #footer a une hauteur de base à partir de laquelle travailler - ceci est absent de votre code :

html,body{
    height: 100%
}

Vous constaterez également que vous rencontrerez des problèmes en utilisant bottom: -50px car cela poussera votre contenu sous le pli lorsqu'il n'y a pas beaucoup de contenu. Vous devrez ajouter margin-bottom: 50px au dernier élément avant le #footer .

0 votes

Merci beaucoup, je pensais que le html,body height avait été réglé, il semble que non, j'ai changé le bottom aussi et voilà. Merci encore

0 votes

Je m'excuse de vous le redemander, mais j'ai remarqué que lorsque la fenêtre d'affichage est réduite à la taille d'un iphone, le texte du pied de page est recouvert par le contenu Avez-vous une idée ?

0 votes

Pas de problème. Est-ce que vous appliquez margin-bottom: 50px au dernier élément de contenu avant le pied de page ? Si c'est le cas et que cela ne fonctionne pas, il se peut que vous deviez augmenter cette valeur pour un iPhone (je ne sais pas pourquoi, mais cela pourrait être le cas). Vous pouvez le faire en utilisant Requêtes média CSS

9voto

awendt Points 2569

8voto

easwee Points 7655

http://bootstrapfooter.codeplex.com/

Cela devrait résoudre votre problème.

<div id="wrap">
<div id="main" class="container clear-top">
<div class="row">
<div class="span12">
Your content here.
</div>
</div>
</div>
</div>
<footer class="footer" style="background-color:#c2c2c2">
</footer>

CSS :

html,body
{
height:100%;
}

#wrap
{
min-height: 100%;
}

#main
{
overflow:auto;
padding-bottom:150px; /* this needs to be bigger than footer height*/
}

.footer
{
position: relative;
margin-top: -150px; /* negative value of footer height */
height: 150px;
clear:both;
padding-top:20px;
color:#fff;
}

0 votes

Merci, mais que fait le @renderbody(), j'ai déjà essayé cette solution auparavant et j'ai obtenu le @renderbody() en tant que html ?

0 votes

Ignorez cette partie - il s'agit simplement d'une fonction qui appelle le contenu du corps d'autres contrôles.

6voto

vcarvalho Points 467

Voici un exemple utilisant css3 :

CSS :

html, body {
    height: 100%;
    margin: 0;
}
#wrap {
    padding: 10px;
    min-height: -webkit-calc(100% - 100px);     /* Chrome */
    min-height: -moz-calc(100% - 100px);     /* Firefox */
    min-height: calc(100% - 100px);     /* native */
}
.footer {
    position: relative;
    clear:both;
}

HTML :

<div id="wrap">
    <div class="container clear-top">
       body content....
    </div>
</div>
<footer class="footer">
    footer content....
</footer>

violon

0 votes

Une utilisation fantastique du calcaire. Malheureusement, c'est toujours un problème en 2017 avec les sites personnalisés qui utilisent certaines fonctionnalités de bootstrap.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X