J'ai eu la page suivante (lien mort:) http://www.workingstorage.com/Sample.htm
qui a un pied de page que je ne peux pas faire asseoir au bas de la page.
Je veux que le pied de page
- coller au bas de la fenêtre lorsque la page est courte et que l'écran n'est pas rempli, et
- restez à la fin du document et descendez normalement lorsqu'il y a plus d'un écran de contenu (au lieu de chevaucher le contenu).
Le CSS est hérité et m'embrouille; Je n'arrive pas à le changer correctement pour mettre une hauteur minimale sur le contenu ou faire descendre le pied de page vers le bas.
flexbox
.Réponses:
Une méthode simple consiste à rendre le corps
100%
de votre page, avec unmin-height
de100%
trop. Cela fonctionne bien si la hauteur de votre pied de page ne change pas.Donnez au pied de page une marge négative en haut:
la source
box-sizing: border-box;
du corps [et du#container
].J'ai développé une méthode assez simple pour coller le pied de page en bas, mais comme les méthodes les plus courantes, vous devrez l'ajuster pour l'adapter à la hauteur de votre pied de page.
VOIR LA DÉMO
Méthode Flexbox:
Cette méthode ci-dessous utilise une "astuce" en plaçant un
::after
pseudo-élément sur lebody
, et le définit pour avoir la hauteur exacte du pied de page, afin qu'il occupe exactement le même espace que le pied de page, donc lorsque le pied de page estabsolute
positionné dessus, il semblerait que le pied de page prenne vraiment de la place et élimine les effets négatifs de son positionnement absolu (par exemple, en parcourant le contenu du corps)position:absolute
méthode: (ne permet pas la hauteur dynamique du pied de page)Méthode de mise en page du tableau:
la source
display: table
display: table-row
display:table-cell
. Cependant, j'ai trouvé que je devais ajouterbody {margin-top: 0; padding-top: 0; margin-bottom: 0; padding-bottom: 0;}
pour éviter une barre de défilement. Vous pouvez répondre à cela en ajustant lebody:after height
mais je spécifie le mien en rem pas px donc cela devient problématique.flexbox
Une approche très simple qui fonctionne très bien avec plusieurs navigateurs est la suivante:
http://matthewjamestaylor.com/blog/keeping-footers-at-the-bottom-of-the-page
la source
Je l'ai utilisé pour coller mon pied de page en bas et cela a fonctionné pour moi:
HTML
C'est la seule modification que vous devez faire dans le HTML, ajoutez cela
div
avec la"allButFooter"
classe. Je l'ai fait avec toutes les pages, celles qui étaient si courtes, je savais que le pied de page ne resterait pas en bas, et aussi les pages suffisamment longues pour que je sache déjà que je devais faire défiler. J'ai fait cela, donc j'ai pu voir que cela fonctionne bien dans le cas où le contenu d'une page est dynamique.CSS
La
"allButFooter"
classe a unemin-height
valeur qui dépend de la hauteur de la fenêtre d'affichage (100vh
signifie 100% de la hauteur de la fenêtre d'affichage) et de la hauteur du pied de page, que je savais déjà40px
.C'est tout ce que j'ai fait et cela a parfaitement fonctionné pour moi. Je ne l'ai pas essayé dans tous les navigateurs, juste Firefox, Chrome et Edge, et les résultats étaient comme je le souhaitais. Le pied de page colle au bas, et vous n'avez pas à vous soucier de l'index z, de la position ou de toute autre propriété. La position de chaque élément dans mon document était la position par défaut, je ne l'ai pas changé en absolu ou fixe ou quoi que ce soit.
Travailler avec une conception réactive
Voici quelque chose que j'aimerais clarifier. Cette solution, avec le même pied de page de 40 pixels de haut, n'a pas fonctionné comme je m'y attendais lorsque je travaillais dans une conception réactive à l'aide
Twitter-Bootstrap
. J'ai dû modifier la valeur que je soustrayais dans la fonction:C'est probablement parce qu'il a
Twitter-Bootstrap
ses propres marges et rembourrages, c'est pourquoi j'ai dû ajuster cette valeur.J'espère que cela vous sera utile! Au moins, c'est une solution simple à essayer, et cela n'implique pas d'apporter de grandes modifications à l'ensemble du document.
la source
display: none
Merci. C'est sympa et simple aussi.position: fixed; bottom: 0
et celui-là. Cette solution est la meilleure car le pied de page ne colle pas en bas, mais reste à la fin de la page déroulante..footer {max-height: calc(100vh+40px); position: absolute}
. Comme cela fonctionne également, vous devez simplement connaître votre taille corporelle.À partir d'IE7, vous pouvez simplement utiliser
Voir caniuse pour le support.
la source
Une solution simple que j'utilise, fonctionne à partir d'IE8 +
Donnez une hauteur minimale: 100% en html de sorte que si le contenu est moins, la page fixe prend la hauteur du port d'affichage complet et le pied de page reste en bas de la page. Lorsque le contenu augmente, le pied de page diminue avec le contenu et continue de rester en bas.
Démo de travail JS fiddle: http://jsfiddle.net/3L3h64qo/2/
Css
Html
la source
Pourtant, une autre solution vraiment simple est celle-ci:
jsFiddle
L'astuce consiste à utiliser un
display:table
pour l'ensemble du document etdisplay:table-row
avecheight:0
pour le pied de page.Étant donné que le pied de page est le seul enfant de corps qui dispose d'un affichage en tant que
table-row
, il est rendu au bas de la page.la source
height: 100%
alors être en fait son 100% lorsque le ratio de la fenêtre d'affichage est 1/1 (carré). Lorsque la fenêtre devient plus large (paysage), la hauteur sera supérieure à 100% et si elle est plus étroite (portrait) inférieure à 100%. La hauteur est donc proportionnelle à la largeur de la fenêtre. J'ai essayé de le résoudre avec un autre wrapper mais cela n'a pas fonctionné. Quelqu'un a obtenu une solution ou au moins un indice ???Une solution de flexion très simple qui ne suppose pas de hauteurs fixes ni de changement de position des éléments.
HTML
CSS
Prise en charge du navigateur
Tous les principaux navigateurs, sauf IE11 et versions antérieures.
Assurez-vous d'utiliser Autoprefixer pour les préfixes appropriés.
Afficher l'extrait de code
la source
Une chose dont il faut se méfier, ce sont les appareils mobiles, car ils mettent en œuvre l'idée de la fenêtre d'affichage d'une manière «inhabituelle»:
http://developer.apple.com/library/ios/#documentation/AppleApplications/Reference/SafariWebContent/UsingtheViewport/UsingtheViewport.html#//apple_ref/doc/uid/TP40006509-SW25
En tant que tel, en utilisant
position: fixed;
(comme je l'ai vu recommandé dans d'autres endroits) n'est généralement pas la voie à suivre. Bien sûr, cela dépend du comportement exact que vous recherchez.Ce que j'ai utilisé et qui a bien fonctionné sur ordinateur et sur mobile, c'est:
avec
la source
Faites ceci
Vous pouvez également lire sur flex il est pris en charge par tous les navigateurs modernes
Mise à jour : j'ai lu sur flex et l'ai essayé. Ça a marché pour moi. J'espère qu'il en va de même pour vous. Voici comment j'ai implémenté. Ici, le principal n'est pas l'ID, c'est le div
Ici, vous pouvez en savoir plus sur flex https://css-tricks.com/snippets/css/a-guide-to-flexbox/
N'oubliez pas qu'il n'est pas pris en charge par les anciennes versions d'IE.
la source
flex-grow: 1
de quelque chose au-dessus du pied de page gardera correctement le pied de page en bas.Je viens de répondre comme une question similaire ici:
Positionner le pied de page au bas de la page avec un en-tête fixe
Je suis assez nouveau dans le développement Web, et je sais que cela a déjà été répondu, mais c'est la manière la plus simple que j'ai trouvée pour le résoudre et je pense que c'est en quelque sorte différent. Je voulais quelque chose de flexible car le pied de page de mon application web a une hauteur dynamique, j'ai fini par utiliser FlexBox et une entretoise.
J'assume un
column
comportement pour notre application, dans le cas où vous devez ajouter un en-tête, un héros ou tout contenu aligné verticalement.Vous pouvez jouer avec lui ici https://codepen.io/anon/pen/xmGZQL
la source
Ceci est connu comme un pied de page collant. Une recherche Google pour cela donne beaucoup de résultats. Un CSS Sticky Footer est celui que j'ai utilisé avec succès. Mais il y en a plus.
Source pour ce code
la source
Ma méthode jquery, celle-ci place le pied de page en bas de la page si le contenu de la page est inférieure à la hauteur de la fenêtre, ou place simplement le pied de page après le contenu sinon:
De plus, conserver le code dans son propre boîtier avant un autre code réduira le temps nécessaire pour repositionner le pied de page.
la source
Je me suis moi-même penché sur ce problème. J'ai vu pas mal de solutions et chacune d'elles avait des problèmes, impliquant souvent des nombres magiques.
Donc, en utilisant les meilleures pratiques de diverses sources, j'ai trouvé cette solution:
http://jsfiddle.net/vfSM3/248/
La chose que je voulais réaliser spécifiquement ici était de faire défiler le contenu principal entre le pied de page et l'en-tête à l'intérieur de la zone verte.
voici un simple css:
la source
Voilà comment j'ai résolu le même problème
la source
Cela fonctionne bien
la source
Personnalisez simplement la section de pied de page
la source
voici mes deux cents. En comparaison avec d'autres solutions, il n'est pas nécessaire d'ajouter des conteneurs supplémentaires. C'est pourquoi cette solution est un peu plus élégante. Sous l'exemple de code, je vais expliquer pourquoi cela fonctionne.
Donc, la première chose que nous faisons, c'est de faire le plus gros conteneur (html) à 100%. La page html est aussi grande que la page elle-même. Ensuite, nous définissons la hauteur du corps, elle peut être supérieure à 100% de la balise html, mais elle devrait au moins être aussi grande, par conséquent, nous utilisons une hauteur minimale de 100%.
Nous rendons également le corps relatif. Relatif signifie que vous pouvez déplacer l'élément de bloc par rapport à sa position d'origine. Nous n'utilisons pas cela ici cependant. Parce que le parent a une deuxième utilisation. Tout élément absolu est absolu à la racine (html) ou au premier parent / grand-parent relatif. C'est ce que nous voulons, nous voulons que le pied de page soit absolu, par rapport au corps, à savoir le bas.
La dernière étape consiste à définir le pied de page sur absolu et bas: 0, ce qui le déplace vers le bas du premier parent / grand-parent qui est relatif (corps du cours).
Maintenant, nous avons encore un problème à résoudre, lorsque nous remplissons la page complète, le contenu passe sous le pied de page. Pourquoi? bien, parce que le pied de page n'est plus à l'intérieur du "flux html", car il est absolu. Alors, comment pouvons-nous résoudre ce problème? Nous ajouterons un rembourrage au bas du corps. Cela garantit que le corps est réellement plus grand que son contenu.
J'espère que j'ai fait beaucoup clair pour vous les gars.
la source
Dynamic one liner utilisant jQuery
Toutes les méthodes CSS que j'ai rencontrées sont trop rigides. En outre, la définition du pied de page
fixed
n'est pas une option si cela ne fait pas partie de la conception.Testé sur:
En supposant cette disposition:
Utilisez la fonction jQuery suivante:
Qu'est - ce qui fait est fixé le
min-height
pour#content
la hauteur de la fenêtre - la hauteur du pied de page que jamais qui pourrait être à l'époque.Depuis que nous l'avons utilisé
min-height
, si la#content
hauteur dépasse la hauteur de la fenêtre , la fonction se dégrade gracieusement et n'a aucun effet car elle n'est pas nécessaire.Voyez-le en action:
Même extrait sur JsFiddle
Prime:
Nous pouvons aller plus loin et adapter cette fonction au redimensionnement dynamique de la hauteur du visualiseur comme suit:
la source
Tu peux le faire
la source
Définissez simplement le code html, le corps et les autres lignes, à l'exception du pied de page, à 100%. par exemple
le css devient
la source
la source
Que dire de cela:
la source
J'ai utilisé dans mes nombreux projets et je n'ai jamais eu de problème :)
pour votre référence, le code est en extrait
la source