Alignez les éléments à gauche et au centre à l'aide de Flexbox
P粉545682500
2023-08-27 21:54:23
<p>J'utilise Flexbox pour aligner mes éléments enfants. Ce que je veux faire, c'est centrer un élément et aligner l'autre élément à gauche. Normalement, j'utiliserais <code>margin-right: auto</code> pour définir l'élément de gauche. Le problème est d'éloigner l'élément central du centre. Est-ce possible sans utiliser le positionnement absolu ? </p>
<p><strong>HTML et CSS</strong></p>
<p><br /></p>
<pre class="brush:css;toolbar:false;">#parent {
aligner les éléments : centre ;
bordure : 1px noir uni ;
affichage : flexible ;
justifier-contenu : centre ;
marge : 0 automatique ;
largeur : 500 px ;
}
#gauche {
marge droite : auto ;
}
#centre {
marge : auto ;
}</pré>
<pre class="brush:html;toolbar:false;"><div id="parent">
<span id="left">Gauche</span>
<span id="center">Centre</span>
</div></pre>
<p><br /></p>
Ajouter un troisième élément vide :
et les styles suivants :
Seules la gauche et la droite grandiront, et de ce fait...
...L'élément central sera toujours parfaitement centré.
À mon avis, c'est bien mieux que la réponse acceptée car vous n'avez pas besoin de copier le contenu de gauche vers la droite et de le masquer pour obtenir la même largeur des deux côtés, cela arrive comme par magie (la flexbox est magique).
Fonctionnement pratique :
EDIT : Voir Réponse de Solo ci-dessous, qui est une meilleure solution.
L'idée derrière flexbox est de fournir un cadre permettant d'aligner facilement des éléments à dimensions variables dans un conteneur. Cela n’a donc aucun sens de proposer une mise en page qui ignore complètement la largeur d’un élément. Essentiellement, c'est à cela que sert le positionnement absolu, car il retire l'élément du flux normal.
Pour autant que je sache, il n'y a pas de bon moyen de le faire sans utiliser
position:absolute;
donc je recommande de l'utiliser... mais si vous ne voulez vraiment pas faire cela ou ne pouvez pas utiliser le positionnement absolu, alors je pense que vous pouvez utiliser l'une des solutions de contournement suivantes.Si vous connaissez la largeur exacte du div "gauche", alors vous pouvez mettre
justify-content
更改为flex-start
(gauche) puis aligner le div "centre" comme ceci :Si vous ne connaissez pas la largeur alors vous pouvez copier "Gauche" à droite, utiliser
justify-content: space- Between;
puis masquer le nouvel élément de droite : Pour être clair, c'est vraiment, vraiment moche... il vaut mieux utiliser le positionnement absolu que de copier le contenu. :-)