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-target-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-target-group définit si un élément est un conteneur de groupe de marqueurs de défilement.

Syntaxe

css
/* Valeurs avec un mot-clé */
scroll-target-group: none;
scroll-target-group: auto;

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

La propriété scroll-target-group est définie comme l'une des valeurs de mot-clé suivantes :

Valeurs

none

L'élément n'est pas un conteneur de groupe de marqueurs de défilement.

auto

L'élément est un conteneur de groupe de marqueurs de défilement.

Description

Définir scroll-target-group: auto sur un élément le désigne comme un conteneur de groupe de marqueurs de défilement. Cela regroupe un ensemble d'éléments de navigation permettant aux utilisateur·ice·s de naviguer entre les éléments d'une page (comme les éléments d'un carrousel ou les sections d'un article) et de mettre en évidence l'élément actuellement visible.

Tout élément HTML <a> avec des identifiants de fragment à l'intérieur du conteneur est automatiquement défini comme un marqueur de défilement. L'élément d'ancrage dont la cible de défilement est actuellement visible peut être mis en forme avec la pseudo-classe :target-current.

Différences entre scroll-target-group et scroll-marker-group

Les conteneurs de groupe de marqueurs de défilement créés à l'aide de scroll-target-group se comportent de manière très similaire à ceux créés à l'aide de la propriété scroll-marker-group, avec quelques différences :

  • Avec scroll-target-group, vous devez créer votre propre balisage pour représenter le conteneur de groupe de marqueurs de défilement et les marqueurs de défilement, tandis que scroll-marker-group crée automatiquement un ensemble de pseudo-éléments pour représenter le conteneur (::scroll-marker-group) et les marqueurs (une ou plusieurs instances de ::scroll-marker). Ceux-ci ont automatiquement les associations de navigation attendues avec le conteneur de défilement sur lequel ils sont générés. L'utilisation de scroll-marker-group offre une configuration plus rapide car vous n'avez pas besoin d'utiliser votre propre balisage. Cependant, créer votre propre balisage et le définir comme conteneur de groupe de marqueurs de défilement via scroll-target-group offre plus de contrôle et de flexibilité.
  • Les liens désignés comme marqueurs de défilement via scroll-target-group n'ont aucun comportement de navigation spécial, tandis que les marqueurs générés via scroll-marker-group ont automatiquement les sémantiques tablist/tab appliquées, ce qui signifie qu'ils se comportent comme un seul élément dans l'ordre de tabulation, et les utilisateur·ice·s peuvent se déplacer entre les marqueurs de défilement avec les touches fléchées. Encore une fois, scroll-marker-group fournit un comportement par défaut utile, mais vous avez la flexibilité de fournir des sémantiques et un comportement alternatifs pour les marqueurs définis à l'aide de scroll-target-group.

Définition formelle

Valeur initialenone
Applicabilitétous les éléments
Héritéenon
Valeur calculéecomme défini
Type d'animationdiscrète

Syntaxe formelle

scroll-target-group = 
none |
auto

Exemples

Utilisation simple de scroll-target-group

Cet exemple montre une page avec une table des matières reliant différentes sections.

HTML

Notre balisage comporte une série d'éléments HTML <section> contenant du contenu, et une table des matières créée à l'aide d'une liste ordonnée (<ol>/<li>) et d'éléments HTML <a>.

html
<nav id="toc">
  <ol>
    <li><a href="#intro">Introduction</a></li>
    <li><a href="#ch1">Chapitre 1</a></li>
    <li><a href="#ch2">Chapitre 2</a></li>
    <li><a href="#ch3">Chapitre 3</a></li>
    <li><a href="#ch4">Chapitre 4</a></li>
  </ol>
</nav>
<section id="intro" class="chapter">
  <h1>Prose du siècle</h1>
  <p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla luctus
    aliquam dolor, eu lacinia lorem placerat vulputate. Duis felis orci,
    pulvinar id metus ut, rutrum luctus orci. Cras porttitor imperdiet nunc, at
    ultricies tellus laoreet sit amet.
  </p>
</section>
<section id="ch1" class="chapter">
  <h2>Chapitre 1</h2>

  <!-- … -->
</section>
<section id="ch2" class="chapter">
  <h2>Chapitre 2</h2>

  <!-- … -->
</section>

<!-- … -->

CSS

Nous avons masqué la plupart des styles pour plus de concision. Le plus pertinent pour cet exemple est que nous avons défini scroll-target-group: auto sur le <ol> pour le transformer en conteneur de groupe de marqueurs de défilement et déclencher l'algorithme du navigateur pour calculer quel élément <a> est le :target-current à tout moment (c'est-à-dire quel lien est actuellement visible). Nous stylons ensuite la pseudo-classe :target-current avec une couleur (color) red afin qu'elle se démarque clairement.

css
ol {
  scroll-target-group: auto;
}

:target-current {
  color: red;
}

Résultat

Essayez de naviguer en activant les liens et en faisant défiler. Vous verrez que dans chaque cas, la mise en surbrillance rouge se déplace entre les liens pour correspondre à la section actuellement affichée.

Carrousel CSS avec des marqueurs de défilement scroll-target-group

Cet exemple montre comment créer des marqueurs de défilement pour un carrousel CSS en utilisant scroll-target-group. Le code pour cet exemple est similaire à notre exemple de Carrousel avec des pages uniques ; nous expliquerons simplement les différences ci-dessous.

HTML

Le balisage a des ID définis sur les éléments de la liste qui définissent chaque page, et une liste ordonnée ajoutée que nous transformerons en conteneur de groupe de marqueurs de défilement en utilisant CSS.

html

CSS

Nous créons le conteneur de groupe de marqueurs de défilement et les marqueurs de défilement en définissant scroll-target-group sur l'élément <ol>. Le reste du code pour les mettre en forme est très similaire, sauf que nous ciblons des éléments de notre choix (<ol> et <a>) plutôt que les pseudo-éléments ::scroll-marker-group et ::scroll-marker.

Nous complétons le code en définissant quelques styles sur les états :target-current, a:hover et a:focus pour indiquer quelle page est actuellement affichée et quels liens sont survolés/sélectionnés.

css

Résultat

Essayez de naviguer de chacune de ces trois manières : en activant les liens de marqueurs de défilement, en faisant défiler horizontalement ou en appuyant sur les boutons de défilement de chaque côté. Vous verrez que dans chaque cas, la mise en surbrillance se déplace entre les liens pour correspondre à la section actuellement affichée.

Spécifications

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

Compatibilité des navigateurs

Voir aussi