Header sticky : CSS position: sticky et masquage au scroll

Guide du header sticky

Header sticky en CSS : position sticky, rétrécir, masquer au scroll | We.Inc

Créez un header sticky avec position: sticky, puis ajoutez le rétrécissement et le masquage au scroll. Démo en direct, décalage des ancres avec scroll-margin, corrections de z-index et un petit hook React.

Donnez au header position: sticky et top: 0, plus un fond et un z-index, et il reste épinglé pendant le défilement de la page. Il ne reste collé qu'à l'intérieur de son parent, et un ancêtre avec overflow défini peut l'en empêcher. Pour un header qui se masque au scroll, basculez une classe translateY depuis un écouteur de scroll.

sticky ou fixed pour les headers

Un header sticky tient en une ligne de CSS, jusqu'au moment où ça ne suffit plus : le header refuse de rester collé, les liens d'ancre atterrissent dessous, ou un menu déroulant passe derrière le contenu. Cette page couvre la ligne de CSS, puis chacun de ces problèmes, avec une démo de défilement en direct où vous pouvez passer du mode simple au mode rétréci ou masqué.

Questions fréquentes

Pourquoi mon position: sticky ne fonctionne-t-il pas ?

Trois causes habituelles : aucune valeur d'inset comme top: 0, un parent qui se termine juste après le header si bien qu'il n'a pas la place de rester collé, ou un ancêtre avec un overflow autre que visible, qui devient la boîte à laquelle le header se colle. Vérifiez-les dans cet ordre.

Un header doit-il être sticky ou fixed ?

Sticky est plus simple car il garde sa place dans la mise en page, donc rien ne saute en dessous en haut de la page. Fixed est utile quand le header doit se superposer à un hero plein écran, mais vous devez alors ajouter vous-même un padding à la page.

Comment empêcher les liens d'ancre de se cacher sous un header sticky ?

Ajoutez scroll-padding-top au conteneur défilant, généralement html, avec une valeur égale à la hauteur du header. Pour des cibles ponctuelles, vous pouvez plutôt mettre scroll-margin-top sur le titre lui-même.

Pourquoi mon menu déroulant apparaît-il derrière le contenu de la page ?

Le positionnement sticky crée un contexte d'empilement, donc tout ce qui se trouve dans le header ne peut s'empiler qu'à l'intérieur de celui-ci. Remontez le header lui-même avec un z-index supérieur au contenu qui suit, par exemple z-index: 50, plutôt que de remonter le menu déroulant.

Comment sticky fonctionne vraiment

Masquer en descendant, afficher en remontant

Rétrécir sans sauts de mise en page

Le header sticky de base

Header sticky dans une page qui défile

Faites défiler le cadre. Le header reste en haut et le lien d'ancre s'arrête en dessous grâce à scroll-padding-top.

Masquer en descendant, afficher en remontant

CSS des états masqué et rétréci

Le script ne fait que définir des attributs data. Tous les changements visuels sont dans le CSS.

Hook React : useHideOnScroll

Renvoie deux booléens que vous pouvez appliquer au header comme attributs data. Le seuil de 8px ignore les petites secousses.

Les pièges du header sticky

Symptômes et corrections

Sticky simple

Rétrécir

Masquer au scroll

Démo de défilement en direct

Passez du mode simple au mode rétréci ou masqué au scroll, puis faites défiler l'intérieur de la boîte.

Mode du header

Page de démo défilante

Marque

Descendez, puis remontez un peu.

État du header : visible

État du header : visible, défilé

État du header : masqué

État du header : masqué, défilé

Commencer gratuitement · Sans carte bancaire

Voir aussi: Guides

Produit

Pour qui

Fonctionnalités

Ressources

Entreprise

Plan du site