Comment verticalement centre d'une div pour tous les navigateurs?
Je veux un centre de div
verticalement avec les CSS. Je ne veux pas de tables ou de JavaScript, mais seulement pur CSS. J'ai trouvé quelques solutions, mais ils manquent d'Internet Explorer 6 prise en charge.
<body>
<div>Div to be aligned vertically</div>
</body>
Comment puis-je centre un div
verticalement dans tous les principaux navigateurs, y compris Internet Explorer 6?
- Ne pas les gens en permanence à froncer les sourcils sur
tables
pour la mise en page ici? - cela dépend de ce que vous avez à faire, des tables pour la mise en page sont généralement pas polyvalent et long à taper dans le code, avec les css, vous pouvez modifier facilement un 2 cols de mise en page dans un 3/4/5 sols de la mise en page etc. Mais dans ce cas est différent, à l'aide de dizaines de css astuces-et-trucs pour exemple une tâche simple qui peut être accompli grâce à une parfaite croix-navigateur de table, c'est comme d'essayer d'entrer dans votre maison par la fenêtre au lieu d'utiliser la porte.
- Dans le cas où les gens ne se soucient pas des plus âgés prise en charge du navigateur: davidwalsh.nom/css-verticale-centre
- Parce que l'utilisation de tables avec valign ne fonctionne pas? 🙂
- La manière moderne de faire.
- css-vertical-center.com il y a des solutions avec la compatibilité du navigateur de l'information
- Ici est beaucoup de façons de le faire css-tricks.com/centering-css-complete-guide
Vous devez vous connecter pour publier un commentaire.
Ci-dessous est la meilleure solution que j'ai pu construire à la verticale et à l'horizontale centre d'une largeur fixe, flexible hauteur contenu de la boîte. Il a été testé et de travail pour les versions récentes de Firefox, Opéra, Chrome et Safari.
CSS:
HTML:
Voir Un Exemple De Travail Avec Du Contenu Dynamique
J'ai construit dans une certaine dynamique de contenu pour tester la souplesse et aimerais savoir si quelqu'un voit pas de problèmes avec elle. Il devrait bien fonctionner pour l'centrée sur les superpositions d' -- lightbox, pop-up, etc.
.outer {position:absolute;width:100%;height:100%}
n'est pas nécessaire, ils sont ici tout simplement pour démontrer. Tous nous avons besoin estdisplay:table
, si quelqu'un est confus comme je l'ai été..outer
etmiddle
et simplement ignorer les.inner
et son style. Je ne sais pas quel est le point demargin-left
,margin-right
réglé sur auto qui n'est pas le centre de l'élément à l'horizontale??!!!width: 100%;
et l'ajout demargin: 0 auto
à.outer
permet de varier la largeur ainsi.top: 0; left 0;
est manquant, au moins en Chrome qui définit par défaut à 1.Un de plus je ne vois pas sur la liste:
height
doit être déclarée (voir Hauteur Variable)overflow: auto
pour empêcher le contenu de contagion (voir Débordement)Source: Absolue le Centrage Horizontal Et Vertical En CSS
margin: auto;
position=relative
pour l'élément body, alors oui, vous avez besoin d'un parent pour définir qu'à elle.La façon la plus simple serait la suivante 3 lignes de CSS:
1) position: relative;
2) top: 50%;
3) transformer: translateY(-50%);
Qui suit est un EXEMPLE:
CSS:
HTML:
float
.height
de l'div
est100%
. Alors ne fonctionne qu'avecposition: absolute;
.-webkit-transform
variante en particulier, dont j'avais besoin pour rendre cette méthode de travail dans phantomjs... fini les heures de galère, donc je vous remercie!En fait, vous avez besoin de deux divisions pour le centrage vertical. La div contenant le contenu doit avoir une largeur et une hauteur.
CSS:
HTML:
Ici est la résultat
Maintenant la flexbox solution est un moyen très facile pour les navigateurs modernes, je vous le recommande pour vous:
CSS:
HTML:
navbar
, vous pouvez modifier la hauteur à l'aideheight: calc(100% - 55px)
ou quelle que soit la hauteur de votrenavbar
est.C'est la méthode la plus simple que j'ai trouvé et je l'utilise tout le temps
(jsFiddle démo ici)
Merci à Chris Coyier de CSS Astuces pour cet article.
CSS:
HTML:
Soutien commence avec IE8.
Après beaucoup de recherche j'ai enfin trouvé la solution ultime. Il fonctionne même pour les flottait éléments. L'Affichage De La Source
50%
a fonctionné pour moi (pas-50%
)position:absolute
pour moi.Pour centrer la div sur une page, vérifier le violon lien.
CSS:
HTML:
Une autre option est d'utiliser flex zone, vérifier le violon lien.
CSS:
HTML:
Une autre option est d'utiliser un CSS 3 transform:
CSS:
HTML:
%
,em
s etrem
s. Dans l'absolu ou fixe des valeurs de pixels ou de points. Ce que vous faites allusion à l'est ", il ne fonctionne qu'avec une déclaration de hauteur". Howevever, bien que cette méthode décrite par Moe nécessite une certaine hauteur, lorsque vous déclarez qu'il en unités relatives, le pourcentage est le meilleur, peu importe combien le contenu est centré à l'intérieur de la DIV DIV verticalement pour s'adapter à son contenu. C'est la beauté de cette méthode. L'autre bonne chose est que cette méthode fonctionne dans IE8/9/10 dans le cas où quelqu'un l'a encore besoin à l'appui de ces navigateurs.transform: translate(-50%, -50%);
technique. Pour IE8 je venais de le laisser en haut/centre alignés et se déplacer.Flexbox solution
Notes
1. Le parent de l'élément est donné le nom de la classe.
2. Ajouter flex vendeur préfixes si requis par votre navigateurs pris en charge.
CSS:
HTML:
justify-content: center
centre des éléments aussi bien à l'horizontaleMalheureusement — mais pas surprenant que la solution est plus compliquée qu'on le souhaiterait. Aussi, malheureusement, vous aurez besoin d'utiliser d'autres divs autour de la div vous voulez centrée verticalement.
Conforme à la norme navigateurs comme Mozilla, Opera, Safari, etc. vous devez définir la div extérieure pour être affiché comme un table l'intérieur de la div à afficher en tant que table-cell — qui peuvent ensuite être centrée verticalement. Pour Internet Explorer, vous devez position l'intérieur div absolument à l'intérieur de la div extérieure et spécifiez ensuite le haut comme 50%. Les pages suivantes expliquent bien cette technique et de fournir des exemples de code trop:
Centrage Vertical en CSS avec des Inconnus Hauteur (Internet Explorer 7 compatible)(plus direct)Il y a aussi une technique pour faire le centrage vertical à l'aide de JavaScript. L'alignement Vertical du contenu avec JavaScript & CSS le démontre.
Si quelqu'un se soucie de l'Internet Explorer 10 (et plus tard), l'utilisation
flexbox
:CSS:
HTML:
Flexbox support: http://caniuse.com/flexbox
align-items: center;
!La solution la plus simple est ci-dessous:
CSS:
HTML:
Une manière moderne au centre un élément verticalement serait d'utiliser
flexbox
.Vous avez besoin d'un parent pour décider de la hauteur et de l'enfant au centre.
L'exemple ci-dessous centrer une div au centre à l'intérieur de votre navigateur. Ce qui est important (dans mon exemple) est de définir
height: 100%
àbody
ethtml
et puismin-height: 100%
à votre conteneur.CSS:
HTML:
Centrage uniquement à la verticale
Si vous ne vous inquiétez pas à propos de Internet Explorer 6 et 7, vous pouvez utiliser une technique qui comporte deux conteneurs.
Le conteneur externe:
display: table;
Le récipient intérieur:
display: table-cell;
vertical-align: middle;
Le contenu de la boîte:
display: inline-block;
Vous pouvez ajouter n'importe quel contenu que vous souhaitez que le contenu de la boîte sans se soucier de sa largeur ou de la hauteur!
Démo:
CSS:
HTML:
Voir aussi ce Violon!
Centrage horizontalement et verticalement
Si vous voulez centrer horizontalement et verticalement, vous avez aussi besoin de ce qui suit.
Le récipient intérieur:
text-align: center;
Le contenu de la boîte:
text-align: left;
outext-align: right;
, sauf si vous souhaitez un texte centréDémo:
CSS:
HTML:
Voir aussi ce Violon!
CSS:
HTML:
Connexes: Centre une Image
C'est toujours là où je vais quand j'ai de revenir à ce problème.
Pour ceux qui ne veulent pas faire le saut:
position:relative
ouposition:absolute
.position:absolute
ettop:50%
sur le conteneur enfant à se déplacer du haut vers le bas au milieu de la société mère.Un exemple de cela dans le code:
J'ai juste écrit ce CSS et pour en savoir plus, veuillez consulter: Cet article vertical align quoi que ce soit avec seulement 3 lignes de CSS.
La réponse de Billbad fonctionne uniquement avec une largeur fixe de la
.inner
div.Cette solution fonctionne pour une largeur dynamique en ajoutant l'attribut
text-align: center
à la.outer
div.CSS:
HTML:
Le lien suivant présente une façon simple de le faire avec seulement 3 lignes dans votre CSS:
Vertical align quoi que ce soit avec seulement 3 lignes de CSS.
Je sais que la question a déjà une réponse, cependant j'ai vu une utilité dans le lien pour sa simplicité.
Pas de réponse pour la compatibilité du navigateur, mais aussi de parler de la nouvelle Grille et de la pas si de nouvelles Flexbox fonctionnalité.
Grille
À partir de: Mozilla - Grille De Documentation - Align Div Verticalement
Prise En Charge Du Navigateur: Grille De Prise En Charge Du Navigateur
CSS:
HTML:
Flexbox
Prise En Charge Du Navigateur: Flexbox Prise En Charge Du Navigateur
CSS:
Les trois lignes de code à l'aide de
transform
fonctionne pratiquement sur les navigateurs et Internet Explorer:Je suis l'ajout de cette réponse car j'ai trouvé quelques imperfections dans la version précédente de cette réponse (et de Dépassement de Pile ne me permet tout simplement de commentaire).
"position" par rapport bousille le style si la div est dans le corps et n'a pas de div conteneur. Cependant "fixe" semble fonctionner, mais il est évident qu'elle fixe le contenu dans le centre de la fenêtre
Aussi j'ai utilisé ce style de centrage de certains superposition de divs et a constaté que dans Mozilla tous les éléments à l'intérieur de cette transformé div avaient perdu leur bas frontières. Probablement un problème de rendu. Mais l'ajout de seulement l'un rembourrage minimal pour certains d'entre eux l'a rendue correctement. Chrome et Internet Explorer (étonnamment) a rendu les cases sans qu'il soit besoin pour le rembourrage
Je pense qu'une solution solide pour tous les navigateurs, sans l'aide de flexbox - "align-éléments: center;" est une combinaison de display: table et vertical-align: middle;.
CSS
HTML
‣démo: https://jsfiddle.net/6m640rpp/
Grille CSS
CSS:
HTML:
À l'aide de flex propriété de feuille de style CSS.
CSS:
HTML:
ou par à l'aide de
display: flex;
etmargin: auto;
CSS:
HTML:
afficher le texte centre
CSS:
HTML:
À l'aide de pourcentage(%) de la hauteur et la largeur.
CSS:
HTML:
Je l'ai fait avec ce (modifier la largeur, la hauteur, le margin-top et margin-left en conséquence):
Surtout pour les parents divs avec une relative (inconnu) de hauteur, la centrage dans l'inconnu solution fonctionne très bien pour moi. Il y a quelques très beaux exemples de code dans l'article.
Il a été testé sur Chrome, Firefox, Opera et Internet Explorer.
CSS:
HTML:
Il y a un truc que j'ai découvert récemment: Vous devez utiliser
top 50%
& puis tu fais untranslateY(-50%)
CSS:
HTML:
Pour les nouveaux arrivants s'il vous plaît essayer
div
.<div style="display:flex"><div style="margin:auto">Inner</div></div>
Je la trouve plus utile.. il donne la plus précise de la 'H' de mise en page et est très simple à comprendre.
L'avantage de ce langage est que vous définissez votre taille du contenu en un seul endroit -> "au contenu de la page".
Les Couleurs du fond de la page et de ses marges horizontales sont définis dans les divs.
Et ici avec CSS séparés:
Le contenu peut être facilement centrée en utilisant flexbox. Le code suivant montre le CSS pour le conteneur à l'intérieur de laquelle le contenu doit être centré:
Cette solution a fonctionné pour moi si vous avez un élément de type block (e. g. ). J'ai utilisé les couleurs pour rendre la solution plus claire.
HTML:
CSS:
JSFiddle Code De Démo
Je l'utilise. Il fonctionne dans Internet Explorer 8 et les versions ultérieures:
height:268px
- pourdisplay:table
agit comme min-height.CSS:
HTML:
Viens de le faire: Ajouter la classe à votre
div
:Et lire cet article pour une explication. Remarque:
Height
est nécessaire.La suivante est de travailler dans mon cas et a été testé dans Firefox.
La div, la hauteur et la taille de ses parents sont dynamiques. Je l'utilise quand il y a d'autres éléments sur le même parent qui est supérieur à la cible de l'élément, où ils sont tous deux positionnés horizontalement sur la ligne.
Vertical & Horizontale CENTRE
HTML
CSS
Profitez-en!
Déclarer ce Mixin:
De l'inclure dans votre élément:
Je viens de trouvé une autre solution qui a fonctionné pour moi:
CSS
Plus d'informations
À l'aide de la
transform
de la propriété, on peut faire centrée verticalement div facilement.CSS:
HTML:
Voir ici pour l'article complet
La meilleure chose à faire serait:
150 pixels, car c'est la moitié de la div de la hauteur dans ce cas.
C'est de loin l'approche la plus facile, les travaux sur la non-blocage des éléments aussi bien, le seul inconvénient est, c'est Flexbox, donc, les anciens navigateurs ne soutiendra pas cette.
Lien vers codepen:
http://codepen.io/damianocel/pen/LNOdRp
Le point important ici est que, pour le centrage vertical, nous avons besoin de définir un élément parent (conteneur) et l'img doit avoir une hauteur plus petite que l'élément parent.
Cette méthode n'utilise pas tout transformer. Donc il n'a pas un problème avec la sortie de devenir floue.
À vertical-align une case de la page web, y compris Internet Explorer 6, vous pouvez utiliser:
haslayout
propriétédisplay: table-value
pour les autres (et maintenant flex)Violon
CSS:
HTML:
En fait, Internet Explorer 7 apporterait un peu de mal à être ici le seul qui s'appliquent strictement
height: 100%
sur HTML/éléments de carrosserie.Mais, ce qui s'est passé et d'aujourd'hui et qui ont encore l'esprit des anciennes versions d'Internet Explorer,
table/table-cell
est tout simplement parfait,display: flex
est prometteur, etdisplay: grid
apparaîtra un jour.Ici est une façon simple, avec pratiquement pas de code:
Code CSS:
Code HTML:
Votre texte apparaîtra dans le milieu de la page!
Cela a fonctionné dans mon cas (testé uniquement dans les navigateurs modernes):