J'ai besoin d'une solution simple. Je sais que c'est similaire à d'autres questions, comme:
- Tableau HTML avec en-têtes fixes et colonne fixe?
- Comment verrouiller la première ligne et la première colonne d'un tableau lors du défilement, éventuellement en utilisant JavaScript et CSS?
Mais j'ai besoin d'une seule colonne de gauche pour être gelé et je préférerais une solution simple et sans script.
html
css
html-table
agsamek
la source
la source
Réponses:
Si vous voulez un tableau où seules les colonnes défilent horizontalement, vous pouvez
position: absolute
la première colonne (et spécifier sa largeur explicitement), puis encapsuler le tableau entier dans unoverflow-x: scroll
bloc. Ne vous embêtez pas à essayer cela dans IE7, cependant ...HTML et CSS pertinents:
Violon
la source
text-overflow: ellipsis
pour les afficher proprement.Il s'agit d'un plugin jQuery intéressant qui crée des en- têtes et / ou des colonnes fixes. Basculez la colonne fixe sur true sur la page de démonstration pour la voir en action.
la source
Vous pouvez utiliser la
sticky
position. Voici un exemple de code. Il s'agit d'une solution HTML / CSS. Aucun js n'est requis.Code Bootply: https://www.bootply.com/g8pfBXOcY9
la source
En cas de colonne gauche de largeur fixe la meilleure solution est fournie par Eamon Nerbonne .
En cas de colonne gauche de largeur variable, la meilleure solution que j'ai trouvée est de faire deux tableaux identiques et de les pousser l'un au dessus de l'autre. Démo: http://jsfiddle.net/xG5QH/6/ .
la source
seperate
under bootstap, sinon les bordures ne flottent pas avec les cellules. Un peu de nettoyage des frontières requis après cela.visibility: collapse;
aux colonnes à cacher de la table fixe (je dois aimer le:not()
sélecteur css! ). j'ai également utilisé jQuery sur.clone()
la table, une fois qu'il a été généré par php + MySQL + ajax, et l'inséré dans une div nettoyée ...FWIW, voici un tableau qui défile avec la tête et le côté fixes.
http://codepen.io/ajkochanowicz/pen/KHdih
la source
Un peu tard, mais j'ai rencontré ce fil en essayant des solutions pour moi-même. En supposant que vous utilisez des navigateurs modernes de nos jours, j'ai trouvé une solution utilisant CSS calc () pour aider à garantir les largeurs respectées.
J'espère que cela aide quelqu'un!
la source
<br/>
l'<th>
élément?Stylisez la colonne de gauche avec
position: fixed
. (Vous voudrez probablement utilisertop
et desleft
styles pour contrôler exactement où cela se produit.)la source
position: fixed
et reste en place, le reste du contenu agit normalement (vraisemblablement avec une marge gauche définie de sorte qu'il ne chevauche pas la colonne de gauche).Pour la plupart des navigateurs sortis après 2017:
Vous pouvez utiliser le
position: sticky
. Voir https://caniuse.com/#feat=css-sticky .Il n'est pas nécessaire d'avoir une colonne à largeur fixe.
Exécutez l'extrait de code ci-dessous pour voir comment cela fonctionne.
la source
sticky
, donc pas besoin d'une autreposition: sticky
son comportement, donc son utilisation a déjà été montrée.J'ai pris la réponse d'Earmon Nerbonne et l'ai modifiée pour travailler avec des tableaux qui remplissent toute la largeur.
http://jsfiddle.net/DYgD6/6/
Cependant, la largeur de la colonne fixe doit toujours être une valeur définie.
la source
Si vous développez quelque chose de plus compliqué et souhaitez que plusieurs colonnes soient corrigées / collées à gauche, vous aurez probablement besoin de quelque chose comme ça.
la source
Si vous êtes dans l'enfer de Webdevelopper et que vous devez faire en sorte que cela fonctionne pour IE6, voici un exemple de code que j'ai utilisé:
Cela fonctionnera probablement UNIQUEMENT pour IE6, donc utilisez des commentaires conditionnels pour le CSS.
la source
Pas besoin d'ajouter de plugin, CSS peut faire ce travail !!!
L'idée est de rendre absolue la position de toutes les premières cellules de chaque colonne et de fixer la largeur. Ex:
Cela masque certaines parties de certaines colonnes sous la première colonne, alors ajoutez une deuxième colonne vide (ajoutez un deuxième td vide) avec une largeur identique à la première colonne.
J'ai testé et cela fonctionne dans Chrome et Firefox.
la source
Eamon Nerbonne, j'ai changé des CSS dans votre code et c'est mieux maintenant (la barre de défilement commence à la première ligne)
http://jsfiddle.net/At8L8/
J'ajoute juste deux lignes:
la source
Vous pouvez simplement créer la première colonne
position: sticky; z-index: 9
. Il fera coller la colonne / ligne à sa position actuelle. Consultez mon exemple de codepen ici https://codepen.io/swastikmishra/pen/zYYdKBQExemple HTML
la source
Opera était bogué pour toutes les réponses précédentes lorsque je les ai testées sur mon Mac. Si vous faites défiler le tableau, la colonne fixe disparaît après avoir passé la première colonne non fixée. Je suis allé de l'avant et j'ai écrit le code ci-dessous. Cela fonctionne dans tous les navigateurs que j'ai installés localement. Je ne sais pas comment c'est-à-dire gère cela cependant.
Gardez juste à l'esprit que si vous avez l'intention de sauter des lignes dans un tableau et non l'autre ou de modifier les hauteurs des lignes, vous devrez peut-être ajuster ce code.
la source
Voici une autre modification de la réponse la plus populaire, mais avec la gestion de la longueur variable du texte dans les étiquettes de la première colonne: http://jsfiddle.net/ozx56n41/
Fondamentalement, j'utilise la deuxième colonne pour créer la hauteur de ligne, comme cela a été mentionné. Mais mon violon fonctionne en fait contrairement à la plupart mentionnés ci-dessus.
HTML:
CSS:
la source
Pour moi, c'était le seul qui fonctionnait parfaitement (merci à Paul O'Brien!): Https://codepen.io/paulobrien/pen/gWoVzN
Voici l'extrait:
la source
Vous pouvez également styliser le corps avec une taille prédéterminée (via
height:20em
, par exemple) et utiliseroverflow-y:scroll;
Ensuite, vous pouvez avoir un énorme corps, qui défilera indépendamment du reste de la page.
la source
la source
Cela peut être fait facilement à l'aide de tables de données. Les personnes qui sont nouvelles dans les tableaux de données, veuillez vous référer à https://datatables.net/ .C'est un plugin et offre beaucoup de fonctionnalités.Dans le code donné, l'en-tête est fixe, les 3 premières colonnes sont fixes et plusieurs autres fonctionnalités sont ici aussi.
la source
Je n'ai pas vérifié chaque réponse à cette question, mais après avoir analysé la plupart d'entre elles, j'ai constaté que la conception échouait en cas de données multilignes dans les cellules ou la tête. J'ai utilisé Javascript pour résoudre ce problème. J'espère que quelqu'un trouve cela utile.
https://codepen.io/kushagrarora/pen/zeYaoY
Remarque: le div "conteneur" est juste pour démontrer que le code est compatible avec mobile-view.
la source
Je viens de rendre la colonne collante la plus à droite d'une table collante.
Je crois que si vous le faites
{position: sticky; left: 0;}
, vous obtiendrez le résultat souhaité.la source
sticky
n'est pas pris en charge par IE.Si vous ne voulez pas trop toucher à votre table actuelle, vous pouvez créer une fausse colonne épinglée devant la table.
L'exemple montre une façon de le faire sans JS
la source
En HTML5, vous pouvez utiliser CSS
style.transform
.Cependant, je vous recommande de désactiver "glisser entre les pages" si vous implémentez sur Mac.
regardez l'exemple de code
la source
Ajoutez ceci dans la tête:
Javascript:
la source