Comment puis-je verrouiller la première ligne et la première colonne d'une table lors du défilement, éventuellement à l'aide de JavaScript et de CSS?
Comment puis-je créer une table qui a sa première ligne et la première colonne à la fois verrouillé, comme dans Excel, lorsque vous activez 'figer les volets'? J'ai besoin de la table à la fois de faire défiler horizontalement et verticalement (beaucoup de solutions existent, mais seulement de permettre le défilement vertical).
Donc, lorsque vous faites défiler vers le bas dans le tableau, la première ligne va rester sur place, car il aura les en-têtes de colonne. Cela peut être un thead
, ou il ne peut pas, tout ce qui fait la solution la plus facile.
Lorsque vous faites défiler vers la droite, la première colonne reste en place, car il détient les étiquettes pour les lignes.
Je suis à peu près certain que c'est impossible avec les CSS seul, mais quelqu'un peut-il me diriger vers une solution d'activer JavaScript? Il a besoin de travailler dans tous les principaux navigateurs.
- Salut, je sais que c'est un peu vieux, mais avez-vous une solution pour cela? La réponse correcte) a maintenant des liens brisés. J'essaie de trouver la même chose ici: stackoverflow.com/questions/743663/...
- J'ai juste essayé les liens dans la accepté de répondre, et ils ont travaillé pour moi. Êtes-vous toujours des problèmes?
Vous devez vous connecter pour publier un commentaire.
Eh bien, j'ai regardé pour le défilement de la table avec une colonne fixe à comprendre la nécessité de cette condition spécifique et votre question a été l'un de avec pas de fermer les réponses..
J'ai répondu à cette question Grand dynamiquement la taille de la table html avec un fixe de défilement ligne fixe et de défilement de la colonne qui ont inspiré pour mettre en valeur mon travail en tant que plugin https://github.com/meetselva/fixed-table-rows-cols
Le plugin fondamentalement convertit un bien formaté en HTML table pour un défilement table fixe table d'en-tête et de colonnes.
L'utilisation est comme ci-dessous,
Vous pouvez vérifier l' démo et de la documentation ici
colModal
tableau? J'ai une table avec la variable de la largeur des colonnes et je n'arrive pas à comprendre comment obtenir ce cas, utilisable avec votre code. Je me demande si c'est une cascade de dépendance sur colModal du propriété widthwidth number Set the initial width of the column, in pixels. This value currently can not be set as percentage
Vous avez besoin de deux tables, où le premier est l'exacte superposition sur le second. Le second contient toutes les données, où le premier ne contient que la première colonne. Vous devez synchroniser la largeur et selon le contenu est également à la hauteur de ses lignes.
Supplémentaire à ces deux tables, vous avez besoin d'un troisième. C'est la première ligne qui pose exactement entre les deux autres et doit être synchronisée de la même façon.
Vous aurez besoin d'un positionnement absolu ici. Ensuite, vous devez synchroniser le défilement de la table de données avec le défilement des positions de la tête de ligne et la première colonne de la table.
Qui fonctionne très bien dans tous les principaux navigateurs, sauf pour un point: Le défilement synchronisé flottera. Pour corriger cela, vous avez besoin de deux outher div conteneurs qui détiennent un clone du contenu de l'en-tête de ligne et la première colonne. En cas de défilement vertical, vous affichez la ligne d'en-tête de clone pour éviter flottant, tandis que vous repositionner l'original dans le fond.
En cas de défilement horizontal, vous montrer la première ligne clone. Même chose ici.
J'ai posté mon plugin jQuery solution ici: Gelé en-tête de tableau à l'intérieur de défilement div
C'est exactement ce que vous voulez et il est vraiment léger et facile à utiliser.
Je l'ai fait avec une combinaison de:
Voici un jsfiddle exemple à démontrer.
Ne l'ai pas testé sur tous les navigateurs, mais j'imagine que c'est pas beaucoup sur les anciennes versions IE.
JS:
CSS:
HTML:
Il existe assez peu de la croix-navigateur solutions pour cela aujourd'hui, parmi lesquels SuperTable que j'aime à cause de son élégance et de simplicité (continue désormais avec MooGrid) et SlickGrid avec sa liste impressionnante de fonctionnalités.
Vous auriez à le tester, mais si vous avez intégré un iframe dans votre page, puis utilisé le CSS pour absolument position de la 1ère ligne & colonne 0,0 dans l'iframe page qui permettent de résoudre votre problème?
Voici un plugin JQuery: https://github.com/nitsugario/jQuery-Freeze-Table-Column-and-Rows
C'est un plugin jQuery qui peut faire des lignes de la table et les colonnes ne pas défiler. Il peut prendre un tableau HTML objet et le configurer de sorte qu'il peut geler un certain nombre de lignes ou de colonnes, ou les deux, de sorte que le fixe de colonnes ou de lignes ne se défile pas. Les lignes qui doivent être congelés doivent être placés dans le tableau de la section de la tête. Il peut également figer des lignes et des colonnes avec l'aide de colspan ou rowspan.
Comment une solution où vous mettez les "données" de la table à l'intérieur de son propre div, avec
overflow: scroll;
? Ensuite, le navigateur va automatiquement créer des barres de défilement pour la partie de la "table" vous ne voulez pas de verrouillage, et vous pouvez mettre la table en-tête"/première ligne juste au-dessus que<div>
.Pas sûr de comment cela pourrait fonctionner avec défilement horizontal si.
J'ai couru à travers un site il y a quelques semaines. C'est un exemple de travail de la première colonne verrouillé, mais il n'est pas navigateur compatible avec Firefox. Je n'ai pas beaucoup de contrôle autour, mais il semble qu'il ne fonctionne que sous IE. Il y a quelques notes de l'auteur, fournie avec ce que vous pouvez lire.
De verrouillage de la Première colonne:
http://home.tampabay.rr.com/bmerkey/examples/locked-column-csv.html
Laissez-moi savoir si vous avez besoin de Javascript pour verrouiller la Table des en-têtes de trop.
Vous pouvez le faire, sans javascript
voir ce lien:
http://yonax73.blogspot.com/2014/09/tabla-con-cabecera-estatica-cuerpo-con.html
ou de démonstration en direct:
http://jsfiddle.net/yonatanalexis22/aeeme8mt/7/
When you scroll right, the first column stays put, since it holds the labels for the rows.
Et s'ils ne rentrent pas tous, votre CSS permet de masquer ceux la ne sont pas adaptés (overflow-x: hidden
). J'ai essayé d'ajouter plusieurs colonnes, et d'enlever cette règle CSS, et de la première colonne d'un défilement de l'écran. Ce " verrouillage de la première colonne est ce qui en fait un problème difficile.