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.

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 :
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¶
Accessibilité¶
Attributs ARIA¶
Focus visible¶
Prise en charge du clavier¶
Le bouton est focalisable et s'active avec Entrée/Espace.
Performance¶
Écouteur passif¶
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) :
É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¶
- Vérifiez le seuil de défilement
- Confirmez que l'élément existe dans le DOM
- Vérifiez les conflits de z-index
- Inspectez le style d'affichage
Pas de défilement¶
- Vérifiez la prise en charge de
behavior: 'smooth' - Vérifiez le verrouillage du défilement sur le body
- Testez sans autres scripts de défilement
Problèmes de performance¶
- Ajoutez l'option d'écouteur passif
- Utilisez l'anti-rebond
- Réduisez les vérifications du seuil de défilement
Connexe¶
Voir aussi¶
- [[Features]]
- [[Keyboard Navigation]]
- [[Mobile TOC Floating Action Button]]