Je suis vraiment confus. Lorsque vous recherchez des ressources et de la documentation en ligne, la plupart de la documentation de ces propriétés semble faire référence à Flex-box, pas à la grille. Et je ne sais pas dans quelle mesure la documentation relative aux propriétés équivalentes dans Flex-box est applicable à la grille.
J'ai donc essayé de référencer https://css-tricks.com/snippets/css/complete-guide-grid/ , qui les définit comme suit:
justification-items - Aligne le contenu à l'intérieur d'un élément de la grille le long de l'axe de la ligne.
justification-contenu - Cette propriété aligne la grille le long de l'axe des lignes.
justifier-self - Aligne le contenu à l'intérieur d'un élément de la grille le long de l'axe de la ligne.
Mais je ne comprends toujours pas quelle est la différence entre eux. Donc, j'ai 3 questions que je veux clarifier.
justify-items
dans Flex-box est-elle identique à la propriété justify-items
dans Grid? ou sont-ils différents d'une manière ou d'une autre? (En d'autres termes, puis-je réutiliser la documentation Flex-box pour Grid)Toute clarification serait grandement appréciée.
Edit: Puisque tout le monde continue de me donner des ressources Flex-box, je pose des questions sur css-grid, PAS sur Flex-box.
1
Comme le mentionnait reiallenramos, "les propriétés justification-self et justification-items ne sont pas implémentées dans flexbox. Cela est dû à la nature unidimensionnelle de flexbox et au fait que plusieurs éléments peuvent se trouver le long de l'axe, rendant impossible Pour aligner les éléments le long de l'axe principal en ligne dans Flexbox, utilisez la propriété justification-contenu. " - MDN
2-3
Cette capture d'écran de W3 fait un excellent travail en montrant ce qu'ils font et les différences qui les séparent .
Pour plus d'informations et d'exemple, je vous suggère de vérifier:
Et pour l'inspiration:
Différences principales entre justify-content
, justify-items
et justify-self
dans la grille CSS:
justify-content
contrôle l'alignement des colonnes de la grille. Il est défini sur le conteneur de la grille. Il ne s'applique pas à et ne contrôle pas l'alignement des éléments de la grille.justify-items
contrôle l'alignement des éléments de la grille. Il est défini sur le conteneur de la grille.justify-self
remplace justify-items
sur des éléments individuels. Il est défini sur éléments de la grille} et hérite de la valeur de justify-items
, par défaut.Exemple
Voici une grille 2x3.
Le conteneur est:
.container {
display: grid;
grid-template-columns: 100px 100px;
grid-template-rows: 50px 50px 50px;
width: 500px;
height: 250px;
grid-template-areas: " one two"
" three four"
" five six ";
}
.box:nth-child(1) { grid-area: one; }
.box:nth-child(2) { grid-area: two; }
.box:nth-child(3) { grid-area: three; }
.box:nth-child(4) { grid-area: four; }
.box:nth-child(5) { grid-area: five; }
.box:nth-child(6) { grid-area: six; }
/* non-essential decorative styles */
body {
display: flex;
justify-content: center;
}
.container {
background-color: #ddd;
border: 1px solid #aaa;
}
.box {
background-color: lightgreen;
border: 1px solid gray;
display: flex;
justify-content: center;
align-items: center;
font-size: 1.2em;
}
<div class="container">
<div class="box"><span>1</span></div>
<div class="box"><span>2</span></div>
<div class="box"><span>3</span></div>
<div class="box"><span>4</span></div>
<div class="box"><span>5</span></div>
<div class="box"><span>6</span></div>
</div>
justify-content
La propriété justify-content
aligne colonnes dans le conteneur.
.container {
justify-content: space-between;
}
.container {
display: grid;
grid-template-columns: 100px 100px;
grid-template-rows: 50px 50px 50px;
width: 500px;
height: 250px;
grid-template-areas: " one two"
" three four"
" five six ";
}
.box:nth-child(1) { grid-area: one; }
.box:nth-child(2) { grid-area: two; }
.box:nth-child(3) { grid-area: three; }
.box:nth-child(4) { grid-area: four; }
.box:nth-child(5) { grid-area: five; }
.box:nth-child(6) { grid-area: six; }
/* non-essential decorative styles */
body {
display: flex;
justify-content: center;
}
.container {
background-color: #ddd;
border: 1px solid #aaa;
}
.box {
background-color: lightgreen;
border: 1px solid gray;
display: flex;
justify-content: center;
align-items: center;
font-size: 1.2em;
}
<div class="container">
<div class="box"><span>1</span></div>
<div class="box"><span>2</span></div>
<div class="box"><span>3</span></div>
<div class="box"><span>4</span></div>
<div class="box"><span>5</span></div>
<div class="box"><span>6</span></div>
</div>
Avec justify-content: space-between
, les deux colonnes sont épinglées aux bords. Les éléments de la grille sont décalés uniquement parce qu'ils existent dans ces colonnes. Ils ne sont autrement pas affectés.
Notez que cette propriété ne fonctionne que s'il y a de l'espace libre dans le conteneur. Si l'une des colonnes avait la taille fr
, alors tout l'espace libre serait utilisé et justify-content
n'aurait aucun effet.
justify-items
La propriété justify-items
aligne éléments de la grille au sein de leurs traces (pas le conteneur entier)
.container {
justify-items: center;
}
.container {
display: grid;
grid-template-columns: 100px 100px;
grid-template-rows: 50px 50px 50px;
width: 500px;
height: 250px;
grid-template-areas: " one two"
" three four"
" five six ";
}
.box:nth-child(1) { grid-area: one; }
.box:nth-child(2) { grid-area: two; }
.box:nth-child(3) { grid-area: three; }
.box:nth-child(4) { grid-area: four; }
.box:nth-child(5) { grid-area: five; }
.box:nth-child(6) { grid-area: six; }
/* non-essential decorative styles */
body {
display: flex;
justify-content: center;
}
.container {
background-color: #ddd;
border: 1px solid #aaa;
}
.box {
background-color: lightgreen;
border: 1px solid gray;
display: flex;
justify-content: center;
align-items: center;
font-size: 1.2em;
}
<div class="container">
<div class="box"><span>1</span></div>
<div class="box"><span>2</span></div>
<div class="box"><span>3</span></div>
<div class="box"><span>4</span></div>
<div class="box"><span>5</span></div>
<div class="box"><span>6</span></div>
</div>
Avec justify-items: center
, les éléments de la grille sont centrés dans leurs colonnes.
justify-self
La propriété justify-self
remplace justify-items
sur des éléments individuels.
.container { justify-items: center;}
.box:nth-child(2) { justify-self: start; }
.box:nth-child(3) { justify-self: end; }
.box:nth-child(6) { justify-self: stretch; }
.container {
display: grid;
grid-template-columns: 100px 100px;
grid-template-rows: 50px 50px 50px;
width: 500px;
height: 250px;
grid-template-areas: " one two"
" three four"
" five six ";
}
.box:nth-child(1) { grid-area: one; }
.box:nth-child(2) { grid-area: two; }
.box:nth-child(3) { grid-area: three; }
.box:nth-child(4) { grid-area: four; }
.box:nth-child(5) { grid-area: five; }
.box:nth-child(6) { grid-area: six; }
/* non-essential decorative styles */
body {
display: flex;
justify-content: center;
}
.container {
background-color: #ddd;
border: 1px solid #aaa;
}
.box {
background-color: lightgreen;
border: 1px solid gray;
display: flex;
justify-content: center;
align-items: center;
font-size: 1.2em;
}
<div class="container">
<div class="box"><span>1</span></div>
<div class="box"><span>2</span></div>
<div class="box"><span>3</span></div>
<div class="box"><span>4</span></div>
<div class="box"><span>5</span></div>
<div class="box"><span>6</span></div>
</div>
align-content
, align-items
et align-self
Ces propriétés font la même chose que leurs contreparties justify-*
, mais dans la direction perpendiculaire.
Plus ici: Quelle est la différence entre align-items et align-content dans Grid Layout?
10.3. Alignement de l'axe des lignes: le
justify-self
et lejustify-items
PropriétésLes éléments de grille peuvent être alignés dans la dimension en ligne à l'aide de La propriété
justify-self
sur l'élément de grille ou la propriétéjustify-items
sur le conteneur de la grille.10.4. Alignement d'axe de colonne: le
align-self
et lealign-items
PropriétésLes éléments de grille peuvent également être alignés dans la dimension du bloc (perpendiculaire à la dimension inline) à l'aide de la propriété
align-self
sur le fichier élément de grille ou propriétéalign-items
sur le conteneur de grille.10.5. Alignement de la grille: le
justify-content
et lealign-content
PropriétésSi les bords extérieurs de la grille ne correspondent pas à ceux du conteneur de grille bords de contenu (par exemple, si aucune colonne n'est de taille flexible), la grille les pistes sont alignées dans la zone de contenu en fonction du
justify-content
etalign-content
propriétés sur la grille récipient.(emphase ajoutée)
Tu as écrit:
La propriété
justify-items
dans Flex-box est-elle identique à la propriétéjustify-items
dans Grid?
Bien que les spécifications Flex et Grid fournissent leurs propres définitions pour les propriétés d'alignement des mots clés, telles que justify-items
et align-content
, le W3C est en train de supprimer progressivement les propriétés d'alignement de modèles de boîtes individuelles et d'implémenter leur nouveau module d'alignement de boîtes Box , qui cherche à définir un ensemble de propriétés d’alignement à utiliser dans tous les modèles de boîtes.
De la spécification flexbox:
Le module d’alignement des boîtes CSS étend et remplace les définitions de les propriétés d'alignement (
justify-content
,align-items
,align-self
,align-content
) introduites ici.
Il existe des références similaires dans les spécifications de la grille.
OK, je pense que j'ai compris grâce à Michael_B. Ma confusion venait du fait que parfois des propriétés différentes ne changeaient rien au hasard sur la disposition de la grille.
justifier-contenu vous permet de positionner la grille dans son conteneur de grille. C'est pourquoi la propriété justification-contenu n'aura aucun effet si le conteneur de grille a la même taille que la grille. (Ce qui est toujours le cas si vous utilisez des unités fr). C'est aussi pourquoi il peut avoir les valeurs suivantes: espace-autour, espace-entre et espace-égal (en plus du début, de la fin, du centre et de l'étirement), ce qui va briser la grille et placer les éléments de la grille dans le conteneur de grille. C'est une propriété du conteneur de grille .
justification-items vous permet de définir une position par défaut pour le contenu placé dans les éléments de la grille (un élément de la grille étant une case dans la grille, comme défini dans l'article de Michael_B). C'est une propriété du conteneur de grille .
justifier-soi vous permet de remplacer la position par défaut du contenu dans une cellule individuelle. Cela annulera la position définie par les éléments-motivés. Par conséquent, si vous utilisez justification-self sur tous les enfants du conteneur, la définition des éléments de justification sur le conteneur de grille n'aura aucun effet. C'est une propriété du contenu de dans un élément de grille .
Remarque: Si vous faites d'un élément de grille une grille elle-même (autrement dit, le contenu d'un élément de grille est une grille), vous pouvez le positionner dans l'élément de grille externe à l'aide de la propriété justification-self ou du contenu de justification. propriété sur le conteneur de grille de la grille interne, car le conteneur de grille de la grille interne est l'un des contenus des éléments de la grille de la grille externe.
Comme vous vous en doutez, tout cela s'applique également aux propriétés align- *.
S'il vous plaît corrigez-moi si j'ai quelque chose de mal
Justify-self sert à aligner la position du contenu dans sa cellule horizontalement.
Alors que align-self sert à aligner la position du contenu dans sa cellule verticalement.
Voici le résultat de l'alignement des éléments à l'aide de justify-self: start;