Comment centrer div horizontalement et verticalement dans le conteneur en utilisant flexbox. Dans l'exemple ci-dessous, je veux que chaque nombre au-dessous les uns des autres (en lignes), qui sont centrés horizontalement.
.flex-container {
padding: 0;
margin: 0;
list-style: none;
display: flex;
align-items: center;
justify-content: center;
}
row {
width: 100%;
}
.flex-item {
background: tomato;
padding: 5px;
width: 200px;
height: 150px;
margin: 10px;
line-height: 150px;
color: white;
font-weight: bold;
font-size: 3em;
text-align: center;
}
<div class="flex-container">
<div class="row">
<span class="flex-item">1</span>
</div>
<div class="row">
<span class="flex-item">2</span>
</div>
<div class="row">
<span class="flex-item">3</span>
</div>
<div class="row">
<span class="flex-item">4</span>
</div>
</div>
row{
ce qui n'a aucun effet sur les lignes. Si vous le modifiez,.row{
le résultat serait totalement différent.Réponses:
Je pense que vous voulez quelque chose comme ce qui suit.
Voir la démo sur: http://jsfiddle.net/audetwebdesign/tFscL/
Vos
.flex-item
éléments doivent être au niveau du bloc (div
au lieu despan
) si vous souhaitez que la hauteur et le rembourrage supérieur / inférieur fonctionnent correctement.En outre, sur
.row
, définissez la largeur sur auauto
lieu de100%
.Vos
.flex-container
propriétés vont bien.Si vous souhaitez que le
.row
centre soit centré verticalement dans le port de vue, affectez 100% de hauteur àhtml
etbody
, et mettez également à zéro lesbody
marges.Notez qu'il a
.flex-container
besoin d'une hauteur pour voir l'effet d'alignement vertical, sinon, le conteneur calcule la hauteur minimale nécessaire pour enfermer le contenu, qui est inférieure à la hauteur du port de vue dans cet exemple.Note:
La
flex-flow
,flex-direction
, lesflex-wrap
propriétés aurait pu faire cette conception plus facile à mettre en œuvre. Je pense que le.row
conteneur n'est pas nécessaire, sauf si vous souhaitez ajouter un style autour des éléments (image d'arrière-plan, bordures, etc.).Une ressource utile est: http://demo.agektmr.com/flexbox/
la source
Comment centrer les éléments verticalement et horizontalement dans Flexbox
Voici deux solutions générales de centrage.
Un pour les éléments flexibles alignés verticalement (
flex-direction: column
) et l'autre pour les éléments flexibles alignés horizontalement (flex-direction: row
).Dans les deux cas, la hauteur des divisions centrées peut être variable, indéfinie, inconnue, peu importe. La hauteur des divisions centrées n'a pas d'importance.
Voici le HTML pour les deux:
CSS (à l'exclusion des styles décoratifs)
Lorsque les éléments flexibles sont empilés verticalement:
DEMO
Lorsque les éléments flexibles sont empilés horizontalement:
Ajustez la
flex-direction
règle à partir du code ci-dessus.DEMO
Centrer le contenu des éléments flexibles
La portée d'un contexte de mise en forme flexible est limitée à une relation parent-enfant. Les descendants d'un conteneur flex au-delà des enfants ne participent pas à la disposition flex et ignoreront les propriétés flex. Essentiellement, les propriétés flex ne sont pas héritables au-delà des enfants.
Par conséquent, vous devrez toujours appliquer
display: flex
oudisplay: inline-flex
à un élément parent afin d'appliquer des propriétés flex à l'enfant.Pour centrer verticalement et / ou horizontalement du texte ou un autre contenu contenu dans un élément flexible, faites de l'élément un conteneur flexible (imbriqué) et répétez les règles de centrage.
Plus de détails ici: Comment aligner verticalement du texte à l'intérieur d'une flexbox?
Vous pouvez également appliquer
margin: auto
à l'élément de contenu de l'élément flexible.En savoir plus sur les
auto
marges flexibles ici: Méthodes pour aligner les éléments flexibles (voir l'encadré # 56).Centrage de plusieurs lignes d'éléments flexibles
Lorsqu'un conteneur flexible a plusieurs lignes (en raison de l'habillage), la
align-content
propriété sera nécessaire pour l'alignement transversal.De la spécification:
Plus de détails ici: Comment fonctionne le flex-wrap avec align-self, align-items et align-content?
Prise en charge du navigateur
Flexbox est pris en charge par tous les principaux navigateurs, à l' exception d'IE <10 . Certaines versions de navigateur récentes, telles que Safari 8 et IE10, nécessitent des préfixes de fournisseur . Pour ajouter rapidement des préfixes, utilisez le préfixe automatique . Plus de détails dans cette réponse .
Solution de centrage pour les anciens navigateurs
Pour une solution de centrage alternative utilisant la table CSS et les propriétés de positionnement, voir cette réponse: https://stackoverflow.com/a/31977476/3597276
la source
Ajouter
à l'élément conteneur de tout ce que vous souhaitez centrer. Documentation: justifier le contenu et aligner les éléments .
la source
display: inline-flex
dans mon cas, mais c'était une modification facile.)N'oubliez pas d'utiliser des attributs spécifiques aux navigateurs importants:
align-items: centre; ->
justifier-contenu: centre; ->
Vous pouvez lire ces deux liens pour mieux comprendre le flex: http://css-tricks.com/almanac/properties/j/justify-content/ et http://ptb2.me/flexbox/
Bonne chance.
la source
1 - Définissez CSS sur div parent sur
display: flex;
2 - Définissez CSS sur div parent sur
flex-direction: column;
Notez que cela rendra tout le contenu de cette ligne div de haut en bas. Cela fonctionnera mieux si la div parent ne contient que l'enfant et rien d'autre.
3 - Définissez CSS sur div parent sur
justify-content: center;
Voici un exemple de ce à quoi ressemblera le CSS:
la source
Vous pouvez utiliser
display: flex; align-items: center; justify-content: center;
sur votre composant parent
https://repl.it/repls/TomatoImaginaryInitialization
la source
diplay: flex;
car son conteneur etmargin:auto;
son article fonctionnent parfaitement.REMARQUE: vous devez configurer le
width
etheight
pour voir l'effet.la source
Si vous devez centrer un texte dans un lien, cela fera l'affaire:
la source
margin: auto
fonctionne parfaitement avec flexbox. Il centralise verticalement et horizontalement.la source
RÉSULTAT:
CODE
HTML:
CSS:
où
flex-container
div est utilisé pour centrer verticalement et horizontalement votrerows
div, etrows
div est utilisé pour regrouper vos "éléments" et les classer dans une colonne.la source
la source
Utiliser CSS +
jetez un œil ICI
la source