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

scroll-marker-group

Disponibilité limitée

Cette fonctionnalité n'est pas Compatible car elle ne fonctionne pas dans certains des navigateurs les plus utilisés.

Expérimental: Il s'agit d'une technologie expérimentale.
Vérifiez attentivement le tableau de compatibilité des navigateurs avant de l'utiliser en production.

La propriété CSS scroll-marker-group contrôle si un conteneur de défilement a un pseudo-élément ::scroll-marker-group généré. Si présent, la propriété définit également si le groupe de marqueurs de défilement doit être placé before ou after le contenu du conteneur du groupe de défilement dans l'ordre visuel et de tabulation par défaut.

Note : Pour créer un conteneur de groupe de marqueurs de défilement à partir d'un élément existant contenant un ensemble d'éléments HTML <a>, utilisez la propriété scroll-target-group. Lisez les différences de comportement entre les deux.

Syntaxe

css
/* Valeurs uniques */
scroll-marker-group: before;
scroll-marker-group: after;
scroll-marker-group: none;

/* Valeurs globales */
scroll-marker-group: inherit;
scroll-marker-group: initial;
scroll-marker-group: revert;
scroll-marker-group: revert-layer;
scroll-marker-group: unset;

Valeurs

after

Un pseudo-élément ::scroll-marker-group est généré en tant que voisin des éléments enfants du conteneur de défilement, les précédant immédiatement, ainsi que tout pseudo-élément ::scroll-button() généré. Il apparaît à la fin de l'ordre de tabulation et de l'ordre des boîtes de mise en page du conteneur (mais pas dans la structure DOM).

before

Un pseudo-élément ::scroll-marker-group est généré en tant que voisin des éléments enfants du conteneur de défilement, les précédant immédiatement, ainsi que tout pseudo-élément ::scroll-button() généré. Le groupe de marqueurs de défilement apparaît au début de l'ordre de tabulation et de l'ordre des boîtes de mise en page du conteneur.

none

Aucun pseudo-élément ::scroll-marker-group ne sera généré sur l'élément. C'est la valeur par défaut.

Note : En tant que bonne pratique en matière d'accessibilité, faites correspondre la position de rendu visuel du conteneur du groupe de marqueurs de défilement avec l'ordre de tabulation. Lors du positionnement du groupe de marqueurs au début du contenu avec des styles appliqués à ::scroll-marker-group, placez-le au début de l'ordre de tabulation en utilisant before. Lors du positionnement du groupe à la fin du contenu, placez-le à la fin de l'ordre de tabulation en utilisant after.

Définition formelle

Valeur initialenone
Applicabilitéconteneurs d'ascenseurs
Héritéenon
Valeur calculéecomme défini
Type d'animationdiscrète

Syntaxe formelle

scroll-marker-group = 
none |
[ [ before | after ] || [ links | tabs ] ]

Exemples

Voir Créer des carrousels CSS pour des exemples complets utilisant la propriété scroll-marker-group.

Placement des marqueurs de défilement

Dans cet exemple, nous démontrons les trois valeurs de la propriété scroll-marker-group.

HTML

Nous avons une liste HTML de base <ul> avec plusieurs éléments de liste <li>.

html
<ul>
  <li>Élément 1</li>
  <li>Élément 2</li>
  <li>Élément 3</li>
  <li>Élément 4</li>
  <li>Élément 5</li>
  <li>Élément 6</li>
  <li>Élément 7</li>
  <li>Élément 8</li>
</ul>

CSS

Nous transformons notre <ul> en un carrousel en définissant la propriété display sur flex, créant une seule ligne d'éléments <li> sans retour à la ligne. La propriété overflow-x est définie sur auto, ce qui signifie que si les éléments débordent de leur conteneur sur l'axe x, le contenu défilera horizontalement. Nous transformons ensuite le <ul> en un conteneur de défilement avec accrochage, garantissant que les éléments s'alignent toujours correctement lorsque le conteneur est défilé avec une valeur scroll-snap-type de mandatory.

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

css
ul {
  display: flex;
  gap: 4vw;
  padding-left: 0;
  margin: 32px 0;
  overflow-x: auto;
  overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory;

  scroll-marker-group: after;
}

Ensuite, nous mettons en forme les éléments <li>, en utilisant la propriété flex pour les rendre 33% de la largeur du conteneur. La valeur scroll-snap-align de start fait en sorte que le côté gauche de l'élément visible le plus à gauche s'aligne sur le bord gauche du conteneur lorsque le contenu est défilé.

css
li {
  list-style-type: none;
  background-color: #eeeeee;
  flex: 0 0 33%;
  scroll-snap-align: start;
  text-align: center;
  line-height: 5;
}

Nous utilisons ensuite le pseudo-élément ::scroll-marker pour créer un marqueur carré pour chaque élément de liste avec une bordure rouge, et appliquons des styles au pseudo-élément ::scroll-marker-group pour disposer les marqueurs de défilement en ligne avec un écart de 0.2em entre chaque.

css
li::scroll-marker {
  content: " ";
  border: 1px solid red;
  height: 1em;
  width: 1em;
}

::scroll-marker-group {
  display: flex;
  gap: 0.2em;
}

Enfin, pour garantir une bonne expérience utilisateur·ice, nous mettons en forme le marqueur de l'élément actuellement défilé différemment des autres, en ciblant le marqueur avec la pseudo-classe :target-current.

css
::scroll-marker:target-current {
  background: red;
}

Résultat

Notez l'emplacement du conteneur du groupe de marqueurs de défilement. Observez comment l'ordre de tabulation du clavier est différent pour before par rapport à after, et notez comment le groupe disparaît lorsque la valeur est définie sur none.

Spécifications

Spécification
CSS Overflow Module Level 5
# scroll-marker-group-property

Compatibilité des navigateurs

Voir aussi