Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

::column

Expérimental: 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.

Le pseudo-élément CSS ::column représente les colonnes individuelles générées lorsqu'un conteneur est configuré pour afficher son contenu dans plusieurs colonnes via une mise en page CSS multi-colonnes. Le pseudo-élément ::column permet d'appliquer des styles qui n'affectent pas la mise en page à ces fragments générés.

Syntaxe

css
::column {
  /* ... */
}

Description

Quand une mise en page CSS multi-colonnes est utilisée pour disposer le contenu d'un conteneur en plusieurs colonnes (par exemple, en utilisant la propriété column-count), des pseudo-éléments ::column sont générés pour contenir chaque colonne individuelle.

Le pseudo-élément ::column n'accepte que les propriétés de défilement qui s'appliquent aux éléments à l'intérieur d'un conteneur de défilement, y compris scroll-margin, scroll-snap-align et scroll-snap-stop.

Le pseudo-élément ::column peut avoir un pseudo-élément ::scroll-marker. D'autres pseudo-éléments comme ::before et ::after ne sont pas générés sur ::column. L'application de ::column::scroll-marker crée un marqueur pour chaque colonne du conteneur de défilement d'origine, les pseudo-éléments ::scroll-marker héritant de l'élément d'origine du pseudo-élément ::column plutôt que du ::column lui-même.

Cela est utile pour les carrousels CSS : ::column peut être utilisé pour générer des pseudo-éléments ::scroll-marker pour chaque colonne, et les définir comme cibles de défilement en utilisant accrochage de défilement CSS.

Bien que le style qui peut être appliqué à ::column soit très limité, il pourrait être étendu à l'avenir. Toutes les propriétés et valeurs prises en charge à l'avenir seront limitées à celles qui n'affectent pas la mise en page.

Examples

Mise en page de colonnes défilantes

Cette démo crée un conteneur réactif qui ajuste chaque "page" de contenu en place. Elle utilise la propriété columns et le pseudo-élément ::column pour créer des colonnes de contenu qui s'étendent sur toute la largeur de leur conteneur scroll container parent, qui peut être défilé horizontalement. Chaque colonne contient un ou plusieurs éléments de liste, dont le nombre varie en fonction de la largeur de la fenêtre d'affichage.

HTML

Le code HTML suivant consiste en une liste non ordonnée, chaque élément de liste contenant un contenu d'exemple :

html
<ul>
...
  <li>
    <h2>Élément 1</h2>
  </li>
...
</ul>

CSS

La liste est donnée avec une hauteur (height) fixe et une largeur (width) de 100vw pour s'étendre sur toute la largeur de la fenêtre d'affichage. Une valeur overflow-x de scroll est ensuite définie afin que le contenu défile horizontalement, et CSS scroll snap est utilisé pour s'accrocher à chaque élément ou « page » — une valeur scroll-snap-type de x mandatory est utilisée pour faire de la liste un scroll snap container. Enfin, une valeur columns de 1 est définie pour forcer le contenu de la liste à s'afficher comme une seule colonne. Une valeur text-align de center est également appliquée, pour aligner le contenu avec le centre de la liste.

css

Les éléments de la liste sont ensuite mis en forme :

  • Une valeur display de inline-block est définie pour faire en sorte que les éléments de la liste s'alignent les uns à côté des autres et que la liste défile horizontalement.
  • Une width et une height fixes ont été définies sur eux.
  • Une valeur de text-align de left est définie sur eux pour remplacer le text-align: center défini sur le conteneur parent, de sorte que le contenu de l'élément sera aligné à gauche.
  • Chaque élément de liste de numéro pair se voit attribuer une couleur de fond différente via :nth-child(), afin qu'il soit plus facile de voir l'effet de défilement.
css

La propriété scroll-snap-align est définie sur les pseudo-éléments ::column — qui représentent les colonnes de contenu générées par la propriété columns — de sorte que lorsqu'elles sont défilées, une colonne soit centrée dans le conteneur de défilement.

css

Résultat

En s'appuyant sur l'exemple précédent, nous allons créer des marqueurs de défilement pour permettre une navigation directe vers différentes colonnes en appliquant un scroll-marker-group au conteneur et un ::scroll-marker à chaque pseudo-élément ::column. Le HTML reste inchangé.

CSS

Nous créons un groupe de marqueurs de défilement avec la propriété scroll-marker-group, plaçant le groupe après tout le contenu :

css

Nous appliquons ensuite des styles au pseudo-élément ::scroll-marker-group pour disposer les marqueurs de défilement au centre de la ligne avec un écart de 0.4em entre chacun d'eux :

css

Enfin, nous utilisons le pseudo-élément ::scroll-marker pour créer un marqueur rond et transparent pour chaque élément de liste avec une bordure noire, puis nous stylisons le marqueur de l'élément actuellement défilé différemment des autres, en ciblant le marqueur avec la pseudo-classe :target-current :

css

Résultat

Essayez d'appuyer sur les marqueurs de défilement pour sauter directement à chaque page. Notez comment le marqueur actuel est mis en surbrillance afin que vous puissiez voir où vous en êtes dans la pagination. Essayez également de tabuler vers le groupe de marqueurs de défilement, puis utilisez les touches de direction pour faire défiler chaque page.

Voir la création de carrousels CSS pour plus d'exemples de carrousels.

Spécifications

Specification
CSS Multi-column Layout Module Level 2
# column-pseudo

Compatibilité des navigateurs

Voir aussi