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
/* 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
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 quescroll-marker-groupcré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 descroll-marker-groupoffre 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 viascroll-target-groupoffre plus de contrôle et de flexibilité. - Les liens désignés comme marqueurs de défilement via
scroll-target-groupn'ont aucun comportement de navigation spécial, tandis que les marqueurs générés viascroll-marker-groupont automatiquement les sémantiquestablist/tabappliqué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-groupfournit 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 descroll-target-group.
Définition formelle
| Valeur initiale | none |
|---|---|
| Applicabilité | tous les éléments |
| Héritée | non |
| Valeur calculée | comme défini |
| Type d'animation | discrè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>.
<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.
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.
<h1>Carrousel CSS avec un élément par page</h1>
<ul>
<li id="page1">
<h2>Page 1</h2>
</li>
<li id="page2">
<h2>Page 2</h2>
</li>
<li id="page3">
<h2>Page 3</h2>
</li>
<li id="page4">
<h2>Page 4</h2>
</li>
</ul>
<ol>
<li><a href="#page1">1</a></li>
<li><a href="#page2">2</a></li>
<li><a href="#page3">3</a></li>
<li><a href="#page4">4</a></li>
</ol>
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.
ol {
position: absolute;
position-anchor: --my-carousel;
top: calc(anchor(bottom) - 90px);
justify-self: anchor-center;
display: flex;
justify-content: center;
gap: 20px;
list-style-type: none;
padding: 0;
scroll-target-group: auto;
}
ol a {
width: 28px;
height: 28px;
display: inline-block;
text-align: center;
text-decoration: none;
padding-top: 4px;
color: black;
background-color: transparent;
border: 2px solid black;
border-radius: 50%;
}
ol a:hover,
ol a:focus,
:target-current {
background-color: black;
color: white;
}
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
- La propriété
scroll-marker-group - Les pseudo-éléments
::scroll-marker-groupet::scroll-marker - Les pseudo-classes
:target-current,:target-beforeet:target-after - Créer des carroussels CSS
- Le module de débordement CSS