#15501 - column-width - CSS | MDN
Cette propriété CSS permet de mettre une liste d’éléments sur plusieurs colonnes (façon float, mais en mieux).
Si on peut évidemment utiliser les media-queries pour spécifier le nombre de colonnes (4 colonnes si > 1200px ; 3 colonnes si > 800, etc ; 2 colonnes si > 400…) on peut aussi directement utiliser column-width.
Comme dit la page MDN, ça permet d’avoir un effet responsive de façon natif : Ainsi, si on a une colonne large de 300px avec un écart de 0px, on pourrait placer une seule colonne sur 599px mais avoir deux colonnes avec 600px..
(notez que si a une largeur spécifiée de 300px, et qu’on 599px de place, alors la colonne fera 599px de large. Si on passe à 600px de place, alors les deux colonnes feront 300px. Si on passe à 602px de place, les deux colonnes monteront à 301px de place, et ainsi de suite. L’ensemble occupera toujours 100% de la largeur du conteneur.)
Ensuite :
– pour la marge entre les colonnes, c’est column-gap (src)
– si vous voulez qu’un élément ait un effet "col-span" pour le forcer à occuper 100% de la place, c’est column-span: all (src)
Toutes ces propriétés fonctionnent plus ou moins dans les navigateurs, avec les préfixes qui vont bien.
Enfin, une petite astuce pour finir : avec ceci, si votre liste est fait de blocs, alors il se peut que le passage d’une colonne à l’autre se fasse en plein milieu d’un bloc. Pour éviter ça, ajoutez sur les blocs en question : break-inside: avoid-column; (qui ne marche que dans Chrome avec préfixe, mais qui se remplace par page-break-inside: avoid; dans Firefox). Pour IE, voyez ici.
Si on peut évidemment utiliser les media-queries pour spécifier le nombre de colonnes (4 colonnes si > 1200px ; 3 colonnes si > 800, etc ; 2 colonnes si > 400…) on peut aussi directement utiliser column-width.
Comme dit la page MDN, ça permet d’avoir un effet responsive de façon natif : Ainsi, si on a une colonne large de 300px avec un écart de 0px, on pourrait placer une seule colonne sur 599px mais avoir deux colonnes avec 600px..
(notez que si a une largeur spécifiée de 300px, et qu’on 599px de place, alors la colonne fera 599px de large. Si on passe à 600px de place, alors les deux colonnes feront 300px. Si on passe à 602px de place, les deux colonnes monteront à 301px de place, et ainsi de suite. L’ensemble occupera toujours 100% de la largeur du conteneur.)
Ensuite :
– pour la marge entre les colonnes, c’est column-gap (src)
– si vous voulez qu’un élément ait un effet "col-span" pour le forcer à occuper 100% de la place, c’est column-span: all (src)
Toutes ces propriétés fonctionnent plus ou moins dans les navigateurs, avec les préfixes qui vont bien.
Enfin, une petite astuce pour finir : avec ceci, si votre liste est fait de blocs, alors il se peut que le passage d’une colonne à l’autre se fasse en plein milieu d’un bloc. Pour éviter ça, ajoutez sur les blocs en question : break-inside: avoid-column; (qui ne marche que dans Chrome avec préfixe, mais qui se remplace par page-break-inside: avoid; dans Firefox). Pour IE, voyez ici.