J'ai une disposition simple à 2 colonnes avec un pied de page qui efface les div droit et gauche dans mon balisage. Mon problème est que je ne parviens pas à faire en sorte que le pied de page reste en bas de la page dans tous les navigateurs. Cela fonctionne si le contenu pousse le pied de page vers le bas, mais ce n'est pas toujours le cas.
css
html
footer
sticky-footer
Bill le lézard
la source
la source
Réponses:
Pour obtenir un pied de page collant:
Ayez un
<div>
avecclass="wrapper"
pour votre contenu.Juste avant la fermeture
</div>
duwrapper
lieu le<div class="push"></div>
.Juste après la fermeture
</div>
duwrapper
lieu le<div class="footer"></div>
.la source
Utilisez les unités CSS vh!
La façon la plus évidente et la plus simple de contourner un pied de page collant serait probablement d'utiliser les nouvelles unités de fenêtre d'affichage CSS .
Prenons par exemple le balisage simple suivant:
Si l'en-tête fait 80 pixels de haut et le pied de page 40 pixels de haut, alors nous pouvons créer notre pied de page collant avec une seule règle sur la div du contenu:
Ce qui signifie: que la hauteur du div de contenu soit au moins 100% de la hauteur de la fenêtre moins les hauteurs combinées de l'en-tête et du pied de page.
C'est tout.
Afficher l'extrait de code
... et voici comment le même code fonctionne avec beaucoup de contenu dans la div de contenu:
Afficher l'extrait de code
NB:
1) La hauteur de l'en-tête et du pied de page doit être connue
2) Les anciennes versions d'IE (IE8-) et d'Android (4.4-) ne prennent pas en charge les unités d'affichage. ( caniuse )
3) Il était une fois webkit avait un problème avec les unités de fenêtre dans une règle de calcul. Cela a en effet été corrigé ( voir ici ) donc il n'y a pas de problème là-bas. Cependant, si vous cherchez à éviter d'utiliser calc pour une raison quelconque, vous pouvez contourner cela en utilisant des marges négatives et un rembourrage avec le dimensionnement de la boîte -
Ainsi:
Afficher l'extrait de code
la source
Pied de page collant avec
display: flex
Solution inspirée du pied de page collant de Philip Walton .
Explication
Cette solution n'est valable que pour :
Il est basé sur l'
flex
affichage , tirant parti de laflex-grow
propriété, qui permet à un élément de croître en hauteur ou en largeur (lorsque leflow-direction
est défini sur l'uncolumn
ou l' autrerow
), pour occuper l'espace supplémentaire dans le conteneur.Nous allons également tirer parti de l'
vh
unité, qui1vh
est définie comme :Par conséquent, une hauteur de
100vh
c'est une façon concise de dire à un élément de s'étendre sur toute la hauteur de la fenêtre d'affichage.Voici comment structurer votre page Web:
Pour que le pied de page reste en bas de la page, vous voulez que l'espace entre le corps et le pied de page augmente autant qu'il le faut pour pousser le pied de page en bas de la page.
Par conséquent, notre mise en page devient:
la mise en oeuvre
Vous pouvez jouer avec lui au JSFiddle .
Safari bizarreries
Sachez que Safari a une implémentation imparfaite de la
flex-shrink
propriété , qui permet aux éléments de rétrécir plus que la hauteur minimale qui serait requise pour afficher le contenu. Pour résoudre ce problème, vous devrez définirflex-shrink
explicitement la propriété 0 sur le.content
et lefooter
dans l'exemple ci-dessus:la source
.Site-content
élément de solution de Walton joue le même rôle quespacer
. C'est juste appelé différemment..Site-content
a un analogue.content
dans ce balisage .. mais peu importe, j'ai demandé le cas gcedo a une idée précise à ce sujet, pas besoin de devinerVous pouvez utiliser la commande
position: absolute
suivante pour placer le pied de page au bas de la page, mais assurez-vous ensuite que vos 2 colonnes sont appropriéesmargin-bottom
afin qu'elles ne soient jamais obstruées par le pied de page.la source
0px
s dans toutes les feuilles de style que j'ai vues devraient être justes0
.Voici une solution avec jQuery qui fonctionne comme un charme. Il vérifie si la hauteur de la fenêtre est supérieure à la hauteur du corps. Si c'est le cas, cela modifie la marge en haut du pied de page pour compenser. Testé dans Firefox, Chrome, Safari et Opera.
Si votre pied de page a déjà une marge supérieure (de 50 pixels par exemple), vous devrez modifier la dernière partie pour:
la source
Définissez le CSS pour le
#footer
:Vous devrez ensuite ajouter un
padding
oumargin
au bas de votre#sidebar
et#content
pour correspondre à la hauteur#footer
ou lorsqu'ils se chevauchent, le#footer
les couvrira.De plus, si je me souviens bien, IE6 a un problème avec le
bottom: 0
CSS. Vous devrez peut-être utiliser une solution JS pour IE6 (si vous vous souciez d'IE6).la source
Une solution similaire à @gcedo mais sans avoir besoin d'ajouter un contenu intermédiaire afin de pousser le pied de page vers le bas. Nous pouvons simplement ajouter
margin-top:auto
au pied de page et il sera poussé vers le bas de la page quelle que soit sa hauteur ou la hauteur du contenu ci-dessus.la source
.content
flex: 1 0 auto;
pour le rendre évolutif et non shinkable, maismargin-top: auto;
c'est une bonne astuce qui implique un style de pied de page, pas "non lié".content
qui est agréable. En fait, je me demande pourquoi le flex est nécessaire dans cette approche ..display:flex
cela ne fonctionnera pas, vous aurez un flux d'élément de bloc normalmargin:0 auto
élément de bloc central) MAIS nous n'avons pas de direction de colonne donc il n'y a pas de marge auto avec haut / bas. Flexbox a à la fois la direction ligne / colonne;). C'est la légère différence, mais la marge est également utilisée dans flexbox pour aligner l'élément, donc même dans une direction de ligne, vous pouvez utiliser la marge automatique haut / bas pour aligner verticalement. Vous pouvez en lire plus ici: w3.org/TR/css- flexbox-1 / # auto-index.html:
main.css:
Source: https://www.freecodecamp.org/news/how-to-keep-your-footer-where-it-belongs-59c6aa05c59c/
la source
J'ai moi-même eu du mal avec cela parfois et j'ai toujours trouvé que la solution avec tous ces div les uns dans les autres était une solution compliquée. Je me suis juste un peu amusé, et j'ai personnellement découvert que cela fonctionne et que c'est certainement l'un des moyens les plus simples:
Ce que j'aime à ce sujet, c'est qu'aucun HTML supplémentaire ne doit être appliqué. Vous pouvez simplement ajouter ce CSS, puis écrire votre code HTML comme chaque fois
la source
Étant donné que la solution Grid n'a pas encore été présentée, la voici, avec seulement deux déclarations pour l' élément parent , si nous prenons le
height: 100%
etmargin: 0
pour acquis:align-content: space-between
la source
CSS:
HTML:
Cela devrait faire l'affaire si vous recherchez un pied de page réactif aligné en bas de la page, qui conserve toujours une marge supérieure de 80% de la hauteur de la fenêtre.
la source
Utilisez le positionnement absolu et l'index z pour créer un div de bas de page collant à n'importe quelle résolution en procédant comme suit:
position: absolute; bottom: 0;
et la hauteur souhaitéediv
qui enveloppe le contenu du corps avecposition: relative; min-height: 100%;
div
égal à la hauteur plus le rembourrage du pied de pagez-index
pied de page plus grand que le conteneurdiv
si le pied de page est coupéVoici un exemple:
la source
Pour cette question, la plupart des réponses que j'ai vues sont maladroites, difficiles à mettre en œuvre et inefficaces, alors j'ai pensé que j'allais tenter ma chance et trouver ma propre solution qui n'est qu'un tout petit peu de CSS et de HTML
cela fonctionne en définissant la hauteur du pied de page, puis en utilisant css calc pour déterminer la hauteur minimale de la page avec le pied de page toujours en bas, espérons que cela aide certaines personnes :)
la source
Une solution serait de définir la hauteur minimale des boîtes. Malheureusement, il semble que ce ne soit pas bien pris en charge par IE (surprise).
la source
Aucune de ces solutions css pures ne fonctionne correctement avec le redimensionnement dynamique du contenu (au moins sur Firefox et Safari), par exemple, si vous avez un arrière-plan défini sur la div du conteneur, la page, puis redimensionnez (en ajoutant quelques lignes) la table à l'intérieur de la div, la le tableau peut dépasser du bas de la zone stylisée, c'est-à-dire que vous pouvez avoir la moitié du tableau en blanc sur le thème noir et la moitié du tableau blanc complet car la couleur de police et la couleur d'arrière-plan sont blanches. Il est fondamentalement impossible de le réparer avec les pages du rouleau.
La disposition multi-colonnes div imbriquée est un hack moche et la div 100% hauteur / corps / conteneur pour coller le pied de page est un hack plus laid.
La seule solution sans script qui fonctionne sur tous les navigateurs que j'ai essayés: un tableau beaucoup plus simple / plus court avec thead (pour en-tête) / tfoot (pour pied de page) / tbody (td pour n'importe quel nombre de colonnes) et 100% de hauteur. Mais cela a perçu des inconvénients sémantiques et SEO (tfoot doit apparaître avant tbody. Les rôles ARIA peuvent cependant aider les moteurs de recherche décents).
la source
Plusieurs personnes ont mis la réponse à ce problème simple ici, mais j'ai une chose à ajouter, étant donné ma frustration jusqu'à ce que je comprenne ce que je faisais mal.
Comme mentionné, la façon la plus simple de le faire est comme ça ..
Cependant, la propriété non mentionnée dans les articles, probablement parce qu'elle est généralement par défaut, est la position: statique sur la balise body. La position relative ne fonctionnera pas!
Mon thème wordpress avait outrepassé l'affichage du corps par défaut et cela m'a dérouté pendant une longue période odieuse.
la source
Un vieux fil que je connais, mais si vous cherchez une solution réactive, cet ajout jQuery vous aidera:
Le guide complet peut être trouvé ici: https://pixeldesigns.co.uk/blog/responsive-jquery-sticky-footer/
la source
J'ai créé une bibliothèque très simple https://github.com/ravinderpayal/FooterJS
Son utilisation est très simple. Après avoir inclus la bibliothèque, appelez simplement cette ligne de code.
Les pieds de page peuvent être modifiés dynamiquement en rappelant la fonction ci-dessus avec différents paramètres / id.
Remarque: - Vous ne devez pas modifier ou ajouter de CSS. La bibliothèque est dynamique, ce qui implique que même si l'écran est redimensionné après le chargement de la page, il réinitialisera la position du pied de page. J'ai créé cette bibliothèque, car CSS résout le problème pendant un certain temps, mais lorsque la taille de l'affichage change de manière significative, du bureau à la tablette ou vice versa, ils chevauchent le contenu ou ne restent plus collants.
Une autre solution est CSS Media Queries, mais vous devez écrire manuellement différents styles CSS pour différentes tailles d'écrans pendant que cette bibliothèque fait son travail automatiquement et est prise en charge par tous les navigateurs de base prenant en charge JavaScript.
Modifier la solution CSS:
Maintenant, si la hauteur d'affichage est supérieure à la longueur de votre contenu, nous allons fixer le pied de page au bas et sinon, il apparaîtra automatiquement en toute fin d'affichage, car vous devez faire défiler pour voir cela.
Et, cela semble une meilleure solution que JavaScript / bibliothèque.
la source
Je n'ai pas eu de chance avec les solutions suggérées sur cette page auparavant mais finalement, ce petit truc a fonctionné. Je vais l'inclure comme une autre solution possible.
la source
Solution Flexbox
La disposition flexible est préférée pour les hauteurs naturelles d'en-tête et de pied de page. Cette solution flexible est testée dans les navigateurs modernes et fonctionne réellement :) dans IE11.
Voir JS Fiddle .
HTML
CSS
la source
Pour moi, la meilleure façon de l'afficher (le pied de page) est de coller au fond mais de ne pas couvrir le contenu tout le temps:
la source
JQuery CROSS BROWSER CUSTOM PLUGIN - $ .footerBottom ()
Ou utilisez jQuery comme je le fais, et définissez la hauteur de votre pied de page sur
auto
ou surfix
, comme vous le souhaitez, cela fonctionnera de toute façon. ce plugin utilise des sélecteurs jQuery donc pour le faire fonctionner, vous devrez inclure la bibliothèque jQuery dans votre fichier.Voici comment vous exécutez le plugin. Importez jQuery, copiez le code de ce plugin jQuery personnalisé et importez-le après avoir importé jQuery! C'est très simple et basique, mais important.
Lorsque vous le faites, il vous suffit d'exécuter ce code:
il n'est pas nécessaire de le placer dans l'événement prêt pour le document. Il fonctionnera bien tel quel. Il recalculera la position de votre pied de page lorsque la page est chargée et lorsque la fenêtre est redimensionnée.
Voici le code du plugin que vous n'avez pas à comprendre. Sachez simplement comment l'implémenter. Il fait le travail pour vous. Cependant, si vous voulez savoir comment cela fonctionne, regardez simplement le code. Je vous ai laissé des commentaires.
la source
Les solutions flexibles ont fonctionné pour moi jusqu'à rendre le pied de page collant, mais malheureusement, changer le corps pour utiliser la mise en page flexible a fait changer certaines de nos mises en page, et pas pour le mieux. Ce qui a finalement fonctionné pour moi, c'est:
Je l'ai obtenu de la réponse de ctf0 à https://css-tricks.com/couple-takes-sticky-footer/
la source
la source
Si vous ne le souhaitez pas en utilisant la position fixe et en vous suivant avec agacement sur mobile, cela semble fonctionner pour moi jusqu'à présent.
Il suffit de définir le code html à
min-height: 100%;
etposition: relative;
, puisposition: absolute; bottom: 0; left: 0;
sur le pied de page. Je me suis ensuite assuré que le pied de page était le dernier élément du corps.Faites-moi savoir si cela ne fonctionne pas pour quelqu'un d'autre, et pourquoi. Je sais que ces hacks de style fastidieux peuvent se comporter étrangement dans diverses circonstances auxquelles je n'avais pas pensé.
la source
Essayez de placer un conteneur div (avec débordement: auto) autour du contenu et de la barre latérale.
Si cela ne fonctionne pas, avez-vous des captures d'écran ou des exemples de liens où le pied de page ne s'affiche pas correctement?
la source