Skip to main content
Settings
Color Mode
Theme Skin
Background

Appearance preferences are saved in this browser only.

Environment
Current Environment Production

Built with JEKYLL_ENV=production. Changes require deployment.

Quick Links
Theme & Build
Jekyll v3.10.0
Last Build Aug 05, 04:35
Page Location
Page Info
Layout default
Collection none
Path fr/docs/features/back-to-top.md
URL /fr/docs/features/back-to-top/
This page was translated automatically from the English original. View the original

Bouton Retour en haut

Bouton flottant qui apparaît au défilement, permettant aux utilisateurs de revenir rapidement en haut de la page.

Bouton Retour en haut

Un bouton flottant qui apparaît lorsque les utilisateurs font défiler la page vers le bas, offrant une navigation rapide vers le haut de la page.

Une page de documentation partiellement défilée, avec un bouton circulaire de retour en haut flottant dans le coin inférieur

Le bouton reste masqué en haut de la page et apparaît en fondu dès que vous dépassez la première fenêtre d’affichage, afin de ne jamais gêner.

Aperçu

  • Apparaît au défilement : S’affiche après un défilement de 200px
  • Animation fluide : Défilement animé vers le haut
  • Accessible : Sémantique de bouton appropriée
  • Performance : Écouteur de défilement passif

Implémentation

Balisage HTML

<button id="backToTopBtn" 
        class="btn btn-primary rounded-circle position-fixed"
        aria-label="Back to top"
        style="bottom: 20px; right: 20px; display: none; z-index: 1000;">
  <i class="bi bi-arrow-up"></i>
</button>

JavaScript

document.addEventListener('DOMContentLoaded', () => {
  const btn = document.getElementById('backToTopBtn');
  if (!btn) return;

  // Scroll to top
  btn.addEventListener('click', (e) => {
    e.preventDefault();
    window.scrollTo({ top: 0, behavior: 'smooth' });
  });

  // Show/hide based on scroll position
  const toggle = () => {
    const y = window.scrollY || document.documentElement.scrollTop;
    btn.style.display = y > 200 ? 'block' : 'none';
  };

  toggle();
  window.addEventListener('scroll', toggle, { passive: true });
});

Configuration

Seuil de défilement

Ajustez le moment où le bouton apparaît :

// Show after scrolling 500px
btn.style.display = y > 500 ? 'block' : 'none';

Position

#backToTopBtn {
  bottom: 20px;  /* Distance from bottom */
  right: 20px;   /* Distance from right */
}

/* Or use Bootstrap utilities */
.back-to-top {
  bottom: 1rem;
  right: 1rem;
}

Style

#backToTopBtn {
  width: 48px;
  height: 48px;
  background-color: var(--bs-primary);
  border: none;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
  transition: opacity 0.3s ease;
}

#backToTopBtn:hover {
  background-color: var(--bs-primary-dark);
  transform: translateY(-2px);
}

Personnalisation

Différentes icônes

<!-- Arrow up -->
<i class="bi bi-arrow-up"></i>

<!-- Chevron up -->
<i class="bi bi-chevron-up"></i>

<!-- Caret up -->
<i class="bi bi-caret-up-fill"></i>

Avec texte

<button id="backToTopBtn" class="btn btn-primary">
  <i class="bi bi-arrow-up me-1"></i>
  Top
</button>

Animation en fondu

#backToTopBtn {
  opacity: 0;
  transition: opacity 0.3s ease;
}

#backToTopBtn.visible {
  opacity: 1;
}
btn.classList.toggle('visible', y > 200);

Accessibilité

Attributs ARIA

<button aria-label="Scroll to top of page"
        role="button"
        tabindex="0">

Focus visible

#backToTopBtn:focus-visible {
  outline: 2px solid var(--bs-primary);
  outline-offset: 2px;
}

Prise en charge du clavier

Le bouton est focalisable et s’active avec Entrée/Espace.

Performance

Écouteur passif

window.addEventListener('scroll', toggle, { passive: true });

L’option passive: true améliore les performances de défilement en indiquant que l’écouteur n’appellera pas preventDefault().

Anti-rebond (Optionnel)

Pour les pages lourdes, appliquez un anti-rebond au gestionnaire de défilement :

function debounce(fn, wait) {
  let timeout;
  return function() {
    clearTimeout(timeout);
    timeout = setTimeout(fn, wait);
  };
}

window.addEventListener('scroll', debounce(toggle, 100), { passive: true });

Considérations mobiles

Taille adaptée au tactile

Assurez-vous que le bouton respecte la cible tactile minimale (44x44px) :

#backToTopBtn {
  width: 48px;
  height: 48px;
  min-width: 44px;
  min-height: 44px;
}

Éviter le chevauchement

Positionnez-le pour ne pas interférer avec le bouton de sommaire mobile :

/* When mobile TOC FAB is present */
@media (max-width: 991px) {
  #backToTopBtn {
    bottom: 80px; /* Above TOC button */
  }
}

Dépannage

Le bouton n’apparaît pas

  1. Vérifiez le seuil de défilement
  2. Confirmez que l’élément existe dans le DOM
  3. Vérifiez les conflits de z-index
  4. Inspectez le style d’affichage

Pas de défilement

  1. Vérifiez la prise en charge de behavior: 'smooth'
  2. Vérifiez le verrouillage du défilement sur le body
  3. Testez sans autres scripts de défilement

Problèmes de performance

  1. Ajoutez l’option d’écouteur passif
  2. Utilisez l’anti-rebond
  3. Réduisez les vérifications du seuil de défilement

Connexe

Voir aussi

  • [[Features]]
  • [[Keyboard Navigation]]
  • [[Mobile TOC Floating Action Button]]