Cela m'a causé d'énormes maux de tête en essayant de mettre en œuvre une telle grille pour une de nos applications. J'ai essayé toutes les techniques existantes, mais elles posaient toutes des problèmes. La solution la plus proche que j'ai trouvée est d'utiliser un plugin jQuery tel que Flexigrid (regardez sur http://www.ajaxrain.com pour des alternatives), mais cela ne semble pas prendre en charge les tableaux larges à 100%, ce qui est ce dont j'avais besoin.
Ce que j'ai fini par faire, c'est rouler le mien ; Firefox prend en charge le défilement. tbody
j'ai donc reniflé le navigateur et utilisé les CSS appropriés (en définissant la hauteur, le débordement, etc... demandez si vous voulez plus de détails) pour faire défiler les éléments, et pour les autres navigateurs, j'ai utilisé deux tableaux séparés configurés pour utiliser les éléments suivants table-layout: fixed
qui utilise un algorithme de dimensionnement garantissant que la taille indiquée ne sera pas dépassée (les tableaux normaux s'agrandissent lorsque le contenu est trop large pour être adapté). En donnant aux deux tableaux des largeurs identiques, j'ai réussi à aligner leurs colonnes. J'ai enveloppé le second dans un div réglé sur le défilement et, en jouant un peu avec les marges, j'ai obtenu l'aspect et la sensation que je voulais.
Désolé si cette réponse semble un peu vague par endroits ; j'écris rapidement car je n'ai pas beaucoup de temps. Laissez un commentaire si vous voulez que je développe davantage !
2 votes
Il y a beaucoup d'exemples. celui-ci est l'un d'entre eux .
0 votes
Je dois cibler IE6, IE7, FF, ... mais surtout IE malheureusement.
0 votes
Il y a beaucoup de trucs CSS là-dedans. Il devrait être trivial de le faire fonctionner dans IE7.
4 votes
Je suis intéressé par la réponse pour tous les navigateurs !
0 votes
Ne fonctionne que dans 5 et 5.5 d'après ce que je sais.
0 votes
Cela ne fonctionne pas non plus dans IE8. J'ai essayé le mode natif et le mode de compatibilité et rien ne fonctionne sauf le mode bizarrerie.
0 votes
Ce n'est pas une réponse parce que je ne peux pas le tester, mais que diriez-vous de faire en sorte que la CSS définisse le défilement de tbody avec une hauteur définie ?
0 votes
Votre solution ne fonctionne pas si vous ne spécifiez pas la largeur de <th> à l'intérieur de <thead>
18 votes
"Il devrait être trivial de le faire fonctionner dans IE7." Jim, c'est toi ? Tu es mon chef de projet ? :)