En-têtes fixes sur un tableau HTML à cellules de taille variable

Ça ressemble à un cas d’école pour un intégrateur et ça m’a trotté dans la tête pendant un moment pour le tableau des sorts de Wiz’n’Liz je présente donc ici mes conclusions.

Le contexte

Toute la difficulté réside dans la nécessité de respecter la méthode d’affichage par défaut des tableaux, comprendre table-layout: auto, qui donne aux cellules une taille proportionnelle au contenu de celles-ci et dessine les lignes et colonnes du tableau en se basant sur la taille des plus grandes cellules.

Ma solution

Ironiquement, la solution que j’ai trouvée passe par enlever au tableau son caractère dynamique puisque l’on doit fixer la taille des cellules en-têtes. Ceci car sortir une partie (thead, par exemple) des nœuds de son contexte changerait sa taille (puisqu’ils seraient désormais indépendants de tout autre cellule).

Ensuite il est important de préciser qu’il est impossible de faire ça uniquement en CSS puisqu’il faut au minimum que les en-têtes bougent en fonction du déplacement des barres de défilement de façon à ce qu’elles correspondent toujours à leurs lignes et colonnes. À partir de là :

Personnellemnt je retiens la seconde solution, plus simple, plus propre et mieux intégrée à mon goût. La première m’a cependant permis de tomber sur le mystère du vertical-align: middle dans un bloc en position: fixed dans une iframe.