Veuillez rendre les en-têtes de tableau fixes
- On rencontre souvent de grands ensembles de données ou des mises en page sous forme de tableau sur le web.
- Le problème apparaît lorsqu’on commence à faire défiler un tableau contenant des centaines de lignes.
- Lorsque l’en-tête du tableau disparaît, il devient difficile pour l’utilisateur de se souvenir à quoi correspond chaque colonne.
En-têtes fixes
- Les en-têtes fixes semblent magiques, mais leur mise en œuvre est très simple.
- Il suffit d’ajouter seulement deux propriétés CSS à
thead :
position: sticky;
top: 0;
- Avec un taux de prise en charge d’environ 96 % dans le monde,
sticky est pris en charge de manière fiable par de nombreux navigateurs.
- Cela contribue aussi à améliorer l’expérience utilisateur.
L’avis de GN⁺
- Lorsqu’un site web gère de grands tableaux, permettre à l’utilisateur de voir facilement le titre du tableau même en faisant défiler la page améliore grandement l’expérience utilisateur.
- Le fait de pouvoir fixer simplement l’en-tête du tableau à l’aide de la propriété CSS
position: sticky; est une information utile pour les développeurs web.
- Comme cette fonctionnalité est largement prise en charge, les développeurs web peuvent l’implémenter de manière fiable sur différents navigateurs.
1 commentaires
Avis Hacker News
position: sticky;, mais des problèmes apparaissent dès qu’on fait certaines opérations sur le contenu du tableau. Par exemple, j’ai ajouté une fonction qui restaure la position de défilement quand l’utilisateur fait défiler le tableau, quitte la page puis revient. La position restaurée se retrouve toujours décalée d’une ligne vers le bas. Quand on regarde à travers l’en-tête transparent du tableau, la ligne voulue est bien tout en haut, mais l’en-tête la recouvre et la ligne suivante devient la première visible. Ajuster la position de défilement en tenant compte de la hauteur de l’en-tête fonctionne au début, mais il y a parfois un décalage de quelques pixels. Comme le tableau est grand, je fais du chargement différé en fonction des événements de scroll, et comme j’utilise la mise en page automatique des tableaux, il arrive que les cellules d’en-tête deviennent trop étroites, que les mots passent à la ligne et que la hauteur totale de l’en-tête augmente. La solution finale a été de créer unResizeObserversur l’élément d’en-tête afin d’ajuster dynamiquement la position de défilement quand sa hauteur change. Documentation ResizeObserver<th>, il y a de fortes chances que ce soit le comportement qu’ils souhaitent.stderr) et le corps vers la sortie standard (stdout). Sinon, lors d’un tri, les en-têtes peuvent se retrouver mélangés au résultat.position: stickysur les éléments<thead>et<tr>: lien vers l’issue Chromiumtopen tenant compte de la bordure (par exemple0au lieu de-1px), on peut empêcher le corps du tableau de passer au-dessus de l’en-tête. Comparaison entre deux exemples CodePen : CodePen d’origine et CodePen amélioré