Titre réécrit comme : Utilisation de Flexbox pour réaliser le centrage horizontal et vertical des éléments
P粉748218846
2023-08-20 13:00:18
<p>Comment centrer un div horizontalement et verticalement dans un conteneur à l'aide de flexbox. Dans l'exemple ci-dessous, je souhaite que chaque numéro soit centré en dessous (ligne par ligne). </p>
<p><br /></p>
<pre class="brush:css;toolbar:false;">.flex-container {
remplissage : 0 ;
marge : 0 ;
style de liste : aucun ;
affichage : flexible ;
aligner les éléments : centre ;
justifier-contenu : centre ;
}
rangée {
largeur : 100 % ;
}
.flex-article {
arrière-plan : tomate ;
remplissage : 5 px ;
largeur : 200 px ;
hauteur : 150px ;
marge : 10px ;
hauteur de ligne : 150 px ;
Couleur blanche;
poids de la police : gras ;
taille de police : 3em ;
alignement du texte : centre ;
}</pré>
<pre class="brush:html;toolbar:false;"><div class="flex-container">
<div class="ligne">
<span class="flex-item">1</span>
</div>
<div class="ligne">
<span class="flex-item">2</span>
</div>
<div class="ligne">
<span class="flex-item">3</span>
</div>
<div class="ligne">
<span class="flex-item">4</span>
</div>
</div></pre>
<p><br /></p>
<p>http://codepen.io/anon/pen/zLxBo</p>
Comment centrer des éléments verticalement et horizontalement dans Flexbox
Vous trouverez ci-dessous deux solutions de centrage courantes.
Un article flexible pour l'alignement vertical (
flex-direction: column
),另一种用于水平对齐的弹性项目(flex-direction: row
).Dans les deux cas, la hauteur du div centré peut être variable, indéfinie, inconnue, sans importance.
Voici le code HTML des deux :
CSS (hors styles décoratifs)
Lorsque les éléments flexibles sont empilés verticalement :
Démo
Lorsque les éléments flexibles sont empilés horizontalement :
Ajustez les règles
flex-direction
dans le code ci-dessus.Démo
Centrez le contenu de l'élément flexible
La portée duContexte de formatage flexible est limitée aux relations parent-enfant. Les descendants d'un conteneur flex au-delà de ses enfants ne participent pas à la disposition flex et ignoreront les propriétés flex. Fondamentalement, les propriétés élastiques ne sont pas transmissibles en dehors des enfants.
Vous devez donc toujours appliquer
display: flex
或display: inline-flex
à l'élément parent afin d'appliquer la propriété flex aux éléments enfants.Pour centrer du texte ou un autre contenu verticalement et/ou horizontalement, faites de l'élément un conteneur flexible (imbriqué) et répétez les règles de centrage.
Pour plus de détails, voir : Comment aligner verticalement du texte dans flexbox ?
Vous pouvez également appliquer
margin: auto
à l'élément de contenu d'un élément flexible.Apprenez-en plus sur les marges flex
auto
ici : Façons d'aligner les éléments flexibles (voir encadré n°56).Article flexible multiligne centré
Lorsque le conteneur flexible comporte plusieurs lignes (en raison du retour à la ligne), la propriété
align-content
sera cruciale pour l'alignement sur les axes transversaux.De spécification :
Pour plus de détails, voir : Comment flex-wrap fonctionne-t-il avec align-self, align-items et align-content ?
Prise en charge du navigateur
Flexbox est pris en charge dans tous les principaux navigateurs, sauf IE <10. Certaines versions récentes du navigateur, telles que Safari 8 et IE10, nécessitent le préfixe du fournisseur. Pour ajouter rapidement des préfixes, vous pouvez utiliser Autoprefixer. Voir cette réponse pour plus de détails.
Solution de centrage pour les anciens navigateurs
Pour une solution de centrage alternative utilisant des tables CSS et des propriétés de positionnement, voir cette réponse : https://stackoverflow.com/a/31977476/3597276
Je pense que ce que vous voulez est le suivant.