Vous pouvez remplacer align-items
avec align-self
pour un élément flexible. Je cherche un moyen de remplacer justify-content
un élément flexible.
Si vous aviez un conteneur flexbox avec justify-content:flex-end
, mais que vous voulez que le premier élément soit justify-content: flex-start
, comment cela pourrait-il être fait?
Il a été mieux répondu par cet article: https://stackoverflow.com/a/33856609/269396
auto
marges. Voir l'encadré # 26 ici: stackoverflow.com/a/33856609/3597276Réponses:
Il ne semble pas y en avoir
justify-self
, mais vous pouvez obtenir un réglage de résultat similaire appropriémargin
àauto
¹. Par exemple. pourflex-direction: row
(par défaut), vous devez définirmargin-right: auto
pour aligner l'enfant vers la gauche.¹ Ce comportement est défini par la spécification Flexbox .
la source
justify-self
cela n'a peut-être rien à voir avecflexbox
mais est plutôt utilisécss grids
mais je ne suis pas sûr. Je n'arrive pas à le faire fonctionner dans Chrome avec flexbox.AFAIK il n'y a pas de propriété pour cela dans les spécifications, mais voici une astuce que j'ai utilisée: définissez l'élément conteneur (celui avec
display:flex
) surjustify-content:space-around
Ensuite, ajoutez un élément supplémentaire entre le premier et le deuxième élément et définissez-le surflex-grow:10
(ou certains autre valeur qui fonctionne avec votre configuration)Modifier: si les éléments sont étroitement alignés, c'est une bonne idée d'ajouter également
flex-shrink: 10;
à l'élément supplémentaire, de sorte que la mise en page sera correctement adaptée aux petits appareils.la source
min-width: 0
Si vous n'êtes pas réellement limité à conserver tous ces éléments en tant que nœuds frères, vous pouvez envelopper ceux qui vont ensemble dans une autre boîte flexible par défaut, et faire en sorte que le conteneur des deux utilise l'espace entre les deux.
Ou si vous faisiez la même chose avec flex-start et flex-end inversé, vous changez simplement l'ordre du conteneur flex-default et de l'enfant seul.
la source
Il semble que les
justify-self
navigateurs arriveront bientôt . Il y a déjà un article à ce sujet sur MDN . Au moment d'écrire ces lignes, la prise en charge du navigateur est médiocre.Concernant la solution de marge: j'ai une grille Flexbox avec des lacunes. Il n'y a pas
flex-gap
(encore?) De propriété avec Flexbox. Donc, pour les gouttières, j'utilise des rembourrages et des marges, ilmargin: auto
faut donc écraser les autres marges ...la source
In flexbox layouts, this property is ignored
justify-self
fait de travailler dans undisplay: grid
récipient. Il est récent comme Flexbox, donc permet un positionnement riche commealign-items
,align-self
ainsi que certaines fonctionnalités supplémentaires comme celle dont nous avons besoin icijustify-self
. Ce que je recommande, c'est d'utiliser Flexbox chaque fois que cela est suffisant, mais s'il manque quelque chose, la grille a probablement ce que vous recherchez. (par exemple. alignement facile d'un enfant sur centre-x et centre-y, et un autre sur droite-x centre-y - flexbox amargin-left: auto
pour facile gauche + droite, mais pas centre + droite) Exemple: stackoverflow.com/a/57128453 / 2441655Pour les situations où la largeur des éléments que vous souhaitez
flex-end
connaître est connue, vous pouvez définir leur flex sur "0 0 ## px" et définir l'élément que vous souhaitezflex-start
avecflex:1
Cela entraînera le pseudo
flex-start
élément à remplir le conteneur, il suffit de le formatertext-align:left
ou quoi que ce soit.la source
J'ai résolu un cas similaire en définissant le style de l'élément intérieur sur
margin: 0 auto
.Situation: Mon menu contient généralement trois boutons, auquel cas ils doivent l'être
justify-content: space-between
. Mais lorsqu'il n'y a qu'un seul bouton, il sera désormais aligné au centre plutôt qu'à gauche.la source