Cette fonction est expérimentale
Puisque cette fonction est toujours en développement dans certains navigateurs, veuillez consulter le tableau de compatibilité pour les préfixes à utiliser selon les navigateurs.
Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur en fonction des évolutions de la spécification.
La propriété grid-auto-flow
permet de contrôler la façon dont fonctionne l'algorithme de placement automatique. Celui-ci définit exactement comme les objets placés automatiquement s'inscrivent dans la grille.
Valeur initiale | row |
---|---|
Applicabilité | conteneurs de grille |
Héritée | non |
Média | visuel |
Valeur calculée | comme spécifié |
Animable | non |
Ordre canonique | l'ordre unique et non-ambigu défini par la grammaire formelle |
Syntaxe
/* Valeurs avec un mot-clé */ grid-auto-flow: row; grid-auto-flow: column; grid-auto-flow: dense; grid-auto-flow: row dense; grid-auto-flow: column dense; /* Valeurs globales */ grid-auto-flow: inherit; grid-auto-flow: initial; grid-auto-flow: unset;
Valeurs
row
- Un mot-clé qui indique que l'algorithme de placement automatique organisera les éléments en remplissant chacune des lignes au fur et à mesure, quitte à en ajouter si besoin. Si aucune valeur entre
row
oucolumn
n'est fournie,row
sera la valeur par défaut.. column
- Un mot-clé qui indique que l'algorithme de placement automatique organisera les éléments en remplissant chacune des colonnes au fur et à mesure, quitte à en ajouter si besoin .
dense
- Un mot-clé qui indique que l'algorithme de placement automatique utilisera une méthode de « regroupement dense » où il essaie de remplir les trous dans la grille si des éléments plus petits arrivent ensuite. De fait, on peut obtenir une impression de désordre alors qu'il s'agit simplement du comblement des espaces libres.
Si cette valeur est absente, le moteur utilisera un algorithme simple qui ne fait que se déplacer vers l'avant, sans revenir vers les espaces vides. De cette façon, les éléments apparaitront nécessairement dans l'ordre mais pourront laisser des trous.
Syntaxe formelle
[ row | column ] || dense
Exemples
CSS
#grid { height: 200px; width: 200px; display: grid; grid-gap: 10px; grid-template: repeat(4, 1fr) / repeat(2, 1fr); grid-auto-flow: column; /* ou 'row', 'row dense', 'column dense' */ } #item1 { background-color: lime; grid-row-start: 3; } #item2 { background-color: yellow; } #item3 { background-color: blue; } #item4 { grid-column-start: 2; background-color: red; } #item5 { background-color: aqua; }
HTML
<div id="grid"> <div id="item1"></div> <div id="item2"></div> <div id="item3"></div> <div id="item4"></div> <div id="item5"></div> </div> <select id="direction" onchange="changeGridAutoFlow()"> <option value="row">row</option> <option value="column">column</option> </select> <input id="dense" type="checkbox" onchange="changeGridAutoFlow()"> <label for="dense">dense</label>
JavaScript
function changeGridAutoFlow() { var grid = document.getElementById("grid"); var direction = document.getElementById("direction"); var dense = document.getElementById("dense"); var gridAutoFlow = direction.value === "column" ? "row" : "column"; if (dense.checked) { gridAutoFlow += " dense"; } grid.style.gridAutoFlow = gridAutoFlow; }
Résultat
Spécifications
Spécification | État | Commentaires |
---|---|---|
CSS Grid Layout La définition de 'grid-auto-flow' dans cette spécification. |
Version de travail | Définition initiale. |
Compatibilité des navigateurs
Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Edge | Opera | Safari |
---|---|---|---|---|---|---|
Support simple | 29.0[1] | 40.0 (40.0)[2] | Pas de support | Pas de support | 28.0[1] | Nightly build-webkit |
Fonctionnalité | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Support simple | Pas de support | Pas de support | Pas de support | Pas de support | Pas de support |
[1] Fonctionnalité implémentée et qui peut être activée avec le marqueur Fonctionnalités expérimentales de la plate-forme Web sous chrome://flags
.
[2] Fonctionnalité disponible en activant la préférence layout.css.grid.enabled
qui vaut false
par défaut.