Starlight Scroll to Top
Starlight Scroll to Top
Intégration du plugin starlight-scroll-to-top pour la navigation rapide et retour en haut de page
Version :
starlight-scroll-to-top@2.0.0
Starlight :@astrojs/starlight@0.42.4
Intégré le : 2026-10-13
Doc officielle : https://frostybee.github.io/starlight-scroll-to-top/
Repo cloné :~/astro/starlight-scroll-to-top
1. Objectif
Fournir aux utilisateurs un bouton flottant discret et fluide permettant de remonter instantanément en haut des pages de documentation techniques denses.
Le bouton intègre un anneau circulaire de progression (Progress Ring) qui indique visuellement l’état d’avancement de la lecture dans le document.
2. Installation
Dans le workspace apps/web :
pnpm add starlight-scroll-to-top3. Configuration dans astro.config.mjs
Le plugin est ajouté dans le tableau plugins de la configuration Starlight :
import starlightScrollToTop from 'starlight-scroll-to-top';
export default defineConfig({ integrations: [ starlight({ plugins: [ starlightViewModes({...}), starlightSidebarTopics([...], {...}), starlightGiscus({...}), starlightScrollToTop({ position: 'right', tooltipText: { 'fr': 'Retour en haut', 'en': 'Scroll to top', }, showTooltip: true, smoothScroll: true, threshold: 300, showProgressRing: true, progressRingColor: 'var(--sl-color-accent)', borderRadius: '50', showOnHomepage: false, }), starlightPageActions(), starlightDocSearch({...}), ], }), ],});Options retenues1/2
| Option | Valeur | Description |
|---|---|---|
position |
'right' |
Positionnement du bouton en bas à droite de l’écran |
tooltipText |
{ 'fr': 'Retour en haut', 'en': 'Scroll to top' } |
Texte de l’infobulle adapté selon la langue active du document |
showTooltip |
true |
Affiche l’infobulle au survol de la souris |
smoothScroll |
true |
Défilement animé fluide vers le haut |
threshold |
300 |
Distance de défilement (en pixels) avant l’apparition du bouton |
Options retenues2/2
| Option | Valeur | Description |
|---|---|---|
showProgressRing |
true |
Active l’anneau SVG de progression de lecture |
progressRingColor |
'var(--sl-color-accent)' |
Couleur de l’anneau synchronisée sur la couleur d’accent du thème Starlight |
borderRadius |
'50' |
Bouton circulaire moderne (50%) |
showOnHomepage |
false |
Masqué automatiquement sur la page d’accueil |
4. Architecture & Mécanisme d’Injection
4.1 Zéro Conflit de Composants Starlight
Contrairement aux plugins qui surchargent des composants (Sidebar, Pagination, etc.), starlight-scroll-to-top :
- N’écrase aucun composant Starlight.
- Injecte directement un script client optimisé par Vite via le hook
injectScript('page', ...)de l’intégration Astro.
4.2 Support du Cycle de Vie SPA / View Transitions
Le script client gère les événements suivants :
DOMContentLoadedetastro:page-load: initialisation après le chargement du DOM.astro:before-preparation: nettoyage systématique des anciens nœuds DOM et écouteurs d’événements pour éviter les doublons lors des navigations sans rechargement.resize: masquage automatique si le zoom navigateur dépasse 300% afin de préserver l’ergonomie mobile.
5. Tests de Validation1/2
- Compilation TypeScript (
pnpm run typecheck/astro check) : 0 erreurs, 0 warnings - Build de production Cloudflare (
pnpm run build) : Succès (code 0)
5. Tests de Validation2/2
- Dans le navigateur (
http://localhost:8787/gettingstarted/01-setup-local/) :- Défiler de 300px vers le bas : le bouton apparaît en bas à droite.
- L’anneau de progression SVG se remplit proportionnellement au défilement.
- Le survol affiche l’infobulle « Retour en haut ».
- Le clic fait remonter la page de façon fluide.
- Les changements de page (View Transitions) nettoient et réinitialisent le bouton proprement.