J'ai un div
ensemble à display:block
( 90px
height
et width
), et j'ai du texte à l'intérieur.
J'ai besoin que le texte soit aligné au centre verticalement et horizontalement.
J'ai essayé text-align:center
, mais ça ne fait pas la partie horizontale, alors j'ai essayé vertical-align:middle
, mais ça n'a pas marché.
Des idées?
text-align:center
ne fait pas la "partie verticale"?Réponses:
S'il s'agit d'une ligne de texte et / ou d'image, c'est facile à faire. Utilisez simplement:
C'est ça. S'il peut s'agir de plusieurs lignes, c'est un peu plus compliqué. Mais il existe des solutions sur http://pmob.co.uk/ . Recherchez "alignement vertical".
Puisqu'ils ont tendance à être des hacks ou à ajouter des divs compliqués ... J'utilise généralement un tableau avec une seule cellule pour le faire ... pour le rendre aussi simple que possible.
Mise à jour pour 2020:
Sauf si vous devez le faire fonctionner sur des navigateurs antérieurs tels qu'Internet Explorer 10, vous pouvez utiliser flexbox. Il est largement pris en charge par tous les principaux navigateurs actuels . Fondamentalement, le conteneur doit être spécifié comme un conteneur flexible, avec un centrage le long de son axe principal et transversal:
Pour spécifier une largeur fixe pour l'enfant, appelée "élément flexible":
Exemple: http://jsfiddle.net/2woqsef1/1/
Pour emballer le contenu sous film rétractable, c'est encore plus simple: il suffit de supprimer la
flex: ...
ligne de l'élément flexible, et il est automatiquement rétracté.Exemple: http://jsfiddle.net/2woqsef1/2/
Les exemples ci-dessus ont été testés sur les principaux navigateurs, notamment MS Edge et Internet Explorer 11.
Une note technique si vous avez besoin de le personnaliser: à l'intérieur de l'élément flexible, puisque cet élément flexible n'est pas un conteneur flexible lui-même, l'ancienne méthode CSS non flexible de fonctionne comme prévu. Cependant, si vous ajoutez un élément flexible supplémentaire au conteneur flexible actuel, les deux éléments flexibles seront placés horizontalement. Pour les placer verticalement, ajoutez le
flex-direction: column;
au conteneur flexible. C'est ainsi que cela fonctionne entre un conteneur flexible et ses éléments enfants immédiats .Il existe une autre méthode pour effectuer le centrage: en ne spécifiant pas
center
la distribution sur l'axe principal et transversal pour le conteneur flexible, mais en spécifiant plutôtmargin: auto
sur l'élément flexible pour occuper tout l'espace supplémentaire dans les quatre directions et les marges uniformément réparties rendra l'élément flexible centré dans toutes les directions. Cela fonctionne sauf lorsqu'il existe plusieurs éléments flexibles. En outre, cette technique fonctionne sur MS Edge mais pas sur Internet Explorer 11.Mise à jour pour 2016/2017:
Il est plus courant de le faire
transform
et il fonctionne bien même dans les navigateurs plus anciens tels qu'Internet Explorer 10 et Internet Explorer 11. Il peut prendre en charge plusieurs lignes de texte:Exemple: https://jsfiddle.net/wb8u02kL/1/
Pour rétrécir la largeur:
La solution ci-dessus a utilisé une largeur fixe pour la zone de contenu. Pour utiliser une largeur sous film rétractable, utilisez
Exemple: https://jsfiddle.net/wb8u02kL/2/
Si la prise en charge d'Internet Explorer 10 est nécessaire, alors flexbox ne fonctionnera pas et la méthode ci-dessus et la
line-height
méthode fonctionneraient. Sinon, flexbox ferait l'affaire.la source
display: table-cell
propriété pour ça, FYI. Son utilisation fait que l'élément se comporte comme une cellule de tableau et permetvertical-align: middle;
font:
avec ces derniers, assurez-vous de le mettre en avant de laline-
hauteur ».Techniques courantes à partir de 2014:
Approche 1 -
transform
translateX
/translateY
:Exemple ici / Exemple plein écran
Dans les navigateurs pris en charge (la plupart d'entre eux), vous pouvez utiliser
top: 50%
/left: 50%
en combinaison avectranslateX(-50%) translateY(-50%)
pour centrer dynamiquement verticalement / horizontalement l'élément.Approche 2 - Méthode Flexbox:
Exemple ici / Exemple plein écran
Dans les navigateurs pris en charge , définissez l'
display
élément cible surflex
et utilisez-lealign-items: center
pour le centrage vertical etjustify-content: center
pour le centrage horizontal. N'oubliez pas d'ajouter des préfixes de fournisseur pour une prise en charge supplémentaire du navigateur ( voir l'exemple ).Approche 3 -
table-cell
/vertical-align: middle
:Exemple ici / Exemple plein écran
Dans certains cas, vous devrez vous assurer que la hauteur de l'élément
html
/body
est définie sur100%
.Pour un alignement vertical, définissez l'élément parent
width
de /height
pour100%
et ajouterdisplay: table
. Ensuite, pour l'élément enfant, modifiez ledisplay
àtable-cell
et ajoutezvertical-align: middle
.Pour le centrage horizontal, vous pouvez soit ajouter
text-align: center
pour centrer le texte et tout autreinline
élément enfant. Alternativement, vous pouvez utiliser enmargin: 0 auto
supposant que l'élément est deblock
niveau.Approche 4 - Absolument positionnée
50%
par le haut avec déplacement:Exemple ici / Exemple plein écran
Cette approche suppose que le texte a une hauteur connue - dans ce cas,
18px
. Positionnez simplement l'élément50%
par le haut, par rapport à l'élément parent. Utilisez unemargin-top
valeur négative qui correspond à la moitié de la hauteur connue de l'élément, dans ce cas --9px
.Approche 5 - La
line-height
méthode (la moins flexible - non suggérée):Exemple ici
Dans certains cas, l'élément parent aura une hauteur fixe. Pour un centrage vertical, il vous suffit de définir
line-height
sur l'élément enfant une valeur égale à la hauteur fixe de l'élément parent.Bien que cette solution fonctionne dans certains cas, il convient de noter qu'elle ne fonctionnera pas lorsqu'il y a plusieurs lignes de texte - comme celle-ci .
Les méthodes 4 et 5 ne sont pas les plus fiables. Allez avec l'un des 3 premiers.
la source
table-cell
autant que possible.Utilisation de flexbox / CSS:
Le CSS:
Tiré de Astuce rapide: le moyen le plus simple de centrer les éléments verticalement et horizontalement
la source
display: -ms-flexbox; -ms-flex-align: center; -ms-flex-pack: center
.text-align:center
desinline-
éléments .. comme du texte.Ajoutez la ligne
display: table-cell;
à votre contenu CSS pour cette div.Seules les cellules du tableau prennent en charge le
vertical-align: middle;
, mais vous pouvez donner cette définition [cellule-tableau] au div ...Un exemple en direct est ici: http://jsfiddle.net/tH2cc/
la source
position
est absolu ou fixe. Voir: jsfiddle.net/tH2cc/1636J'utilise toujours le CSS suivant pour un conteneur, pour centrer son contenu horizontalement et verticalement.
Voyez-le en action ici: https://jsfiddle.net/yp1gusn7/
la source
Vous pouvez essayer du code très simple pour cela:
Lien Codepen: http://codepen.io/santoshkhalse/pen/xRmZwr
la source
Donnez cette classe CSS à la <div> ciblée:
la source
Vous pouvez utiliser la
flex
propriété sur le parentdiv
et ajouter lamargin:auto
propriété aux éléments enfants:Vous pouvez voir plus d'options
flex
ici: https://css-tricks.com/snippets/css/a-guide-to-flexbox/la source
Approche 1
Approche 2
Approche 3
la source
la source
la source
la source
la source
Cela fonctionne pour moi (testé OK!):
HTML:
CSS:
Vous pouvez choisir d'autres valeurs que 50%. Par exemple, 25% pour centrer à 25% du parent.
la source
la source
Vous pouvez essayer les méthodes suivantes:
Si vous avez un seul mot ou une phrase de ligne, le code suivant peut faire l'affaire.
Ayez un texte dans une balise div et donnez-lui un identifiant. Définissez les propriétés suivantes pour cet ID.
Remarque: assurez-vous que la propriété line-height est identique à la hauteur de la division.
Image
Mais, si le contenu est composé de plusieurs mots ou d'une ligne, cela ne fonctionne pas. En outre, il peut arriver que vous ne puissiez pas spécifier la taille d'une division en px ou% (lorsque la division est vraiment petite et que vous souhaitez que le contenu soit exactement au milieu).
Pour résoudre ce problème, nous pouvons essayer la combinaison de propriétés suivante.
Image
Ces 3 lignes de code définissent le contenu exactement au milieu d'une division (quelle que soit la taille de l'affichage). Le "align-items: center" aide au centrage vertical tandis que "justification-content: center" le fera centré horizontalement.
Remarque: Flex ne fonctionne pas dans tous les navigateurs. Assurez-vous d'ajouter des préfixes de fournisseur appropriés pour une prise en charge supplémentaire du navigateur.
la source
LA GRILLE
Afficher l'extrait de code
la source
Réglage de la hauteur de ligne pour obtenir l'alignement vertical.
la source
Ce devrait être la bonne réponse. Le plus propre et le plus simple:
la source
Appliquer le style:
Votre texte serait centré quelle que soit sa longueur.
la source
Cela a fonctionné pour moi:
la source
Pour moi, c'était la meilleure solution:
HTML:
CSS:
la source
la source
Code vraiment simple qui fonctionne pour moi! Une seule ligne et votre texte sera centré horizontalement.
La sortie ressemble à ceci:
Veuillez voter cette réponse si cela fonctionne juste pour épargner du temps aux développeurs à la recherche de solutions faciles. Merci! :)
la source
Essayez l'exemple suivant. J'ai ajouté des exemples pour chaque catégorie: horizontal et vertical
la source