J'essaie de mettre en œuvre une table UL-Li défilante Pure CSS avec un en-tête fixe.
Mes exigences: p>
J'ai actuellement HTML: P>
.testTable { display: table; margin: 0px; padding: 0px; } .testRow { display: table-row; } .testRow > span { list-style:none; display: table-cell; border: 1px solid #000; padding: 2px 6px; } .testHeader { display: table-header-group; /*position: absolute;*/ } .testHeader span { background-color: #ccc; } .testBody { display: table-row-group; }
haut, droite, gauche, bas code> pourrait aider avec ceci
Pouvez-vous expliquer pourquoi cette question que vous avez référencée n'est pas ce dont vous avez besoin?
@El: Je ne suis pas sûr de comprendre ce que tu veux dire
@Anamaria: J'ai besoin de pure table CSS, voir mes exigences. Cet exemple n'utilise pas cela pour la pose de la table.
Vous ne devriez pas nier votre balisage comme vous le faites actuellement ... Le seul enfant valide d'une liste (
code> ou
code>) est un Élément de liste (- code>).
@Andredion: Mais comment puis-je obtenir un groupe d'en-tête de Li alors? Ou il n'est pas possible de mettre en œuvre la table à l'aide de LIS et de TABLE-CSS?
Il n'y a pas de solutions croisées croisées. Pour Chrome / FF, vous pouvez faire comme ceci: Stackoverflow.com/a/17618682/1654265 . Combinaison de positionnement avec affichage: table; Besoin de la magie sombre (TM) pour travailler: &
@Andrealigios: Pas de chance, voir Relative + Contenu emballé absolu ici . L'en-tête tomba à nouveau.
Pourquoi avez-vous besoin d'utiliser des tables s'il y a d'autres façons de faire cela?
@Danield: Je ne veux pas que Calc expérimental () - Ing des largeurs / hauteurs de pixels, JavaScript pour attraper des événements de redimensionnement, une solution correcte dans une mise en page mais tombe en partie dans l'autre, comme mélanger des flotteurs + nonfloats. Aucun piratage. J'aimerais utiliser les propriétés CSS de modélisation de table disponibles si possible.
Vos données ressemblent à des données tabulaires, je pense donc qu'il est plus sémantique dans ce cas d'utiliser
Autre chose qu'une table pour ce contenu serait une mauvaise utilisation du balisage.
code> Ceci va i> causer des résultats inattendus. Il faut se méfier.
J'accepte l'Andi et Danield, pourquoi ne pas utiliser une table
code> pour afficher vos données tabulaires ... c'est là qu'ils sont conçus pour. Y a-t-il une raison spécifique pour laquelle vous ne voulez pas utiliser de tables?
Je vois que beaucoup de gens sont concernés pourquoi suis-je en utilisant des éléments de liste HTML pour afficher des données tabulaires. Je n'ai pas le temps de tout expliquer, mais je promets que je le ferai demain.
3 Réponses :
votes
Dès que vous spécifiez
Position: absolu code> ou
Position: fixe code> sur
.Testheader code>, il définit
Affichage: bloquer < / Code> Qui remplace
Affichage: Table-Header-Group Code>. P>
Voir ce fil pour plus de détails . P>
OK, mais comment puis-je obtenir cette fonctionnalité alors avec les attributs de la table de CSS?
Ceci est un problème parce que j'utilise le plugin MVC et Jqery qui s'appuie sur Ajaxed Li's of Server, que je suppose ensuite en tant que cellules de table. Cela ne fonctionne pas avec TD. Et comme je le comprendi, CSS Gurus Dites la table est tellement l'année dernière ... hm ...
Les tables sont destinées aux données tabulaires. Vous essayez de réinventer la roue ici d'une manière très inappropriée. Si vous avez la lutte contre ce que votre serveur répond avec, abstraitez vos données dans un format de mise en page-agnostique tel que JSON, puis le rendez-vous à votre guise.
Je vous ai déjà dit qu'il y ait un plugin JQuery qui établit des articles et s'attend à ce que LIS, pas de TDS. Il échoue sur TDS. Je ne peux pas changer le plugin. Que feriez-vous à ma place?
Je sortirais le plugin car il ne semble pas correspondre aux besoins de votre application.
votes
Vous pouvez essayer ceci: Démo strong>
J'ai eu Celles-ci sont correctes en PURE CSS: P>
La dernière exigence que je devais utiliser de jQuery. P>
Quoi qu'il en soit, ce que j'ai fait était créer deux- code> pour
pour code>. L'un d'entre eux a une pièce d'identité avec CSS
11 commentaires
Position: Correction Code> P>
Cette astuce accomplit vos 3 premières exigences. Le dernier est vraiment difficile pour CSS seul alors ce que j'ai fait était ajoutez jQuery: p> xxx pré>
espère que cela a aidé! P>
edit forte > p>
exécution fonction
adjustheader () code> chaque fois que vous ajoutez de nouvelles données afin que les en-têtes se réalignent. P>
Voici un démo strong> p> p>
Bien que cela ne satisfait pas à toutes les exigences, c'est la meilleure solution jusqu'à présent. Un problème que j'ai trouvé est lorsque j'ajoute des articles supplémentaires après son affichage, l'en-tête est mal aligné.
@OzrentkalceckRznaric j'ai ajouté le code à une fonction
adjustheader () code> et le dirigé sur
document.ready code>. Si vous ajoutez un nouveau code, ajoutez
adjustheader code> pour que les en-têtes se réalignent à nouveau. Vérifier mon édition
@OzrentkalceckRznaric Vous savez que la réponse correcte n'est pas la bonne réponse non? : |
Pourquoi penses-tu ça? J'ai donné à l'échantillon pour tester et n'a reçu aucune objection. Et ça a fonctionné pour moi.
@OzrentkalceckRznaric haha ok. Je pensais que l'en-tête
doit s'ajuster au contenu code> son code b> dans ce violon JSFIDDLE.NET/QUQYU/25 B> avec Valeurs B> différentes :) Eh bien c'est votre question. Vous savez ce dont vous avez besoin. À votre santé!
Super. Évidemment, nous avons testé ce code comme celui-ci: http://jsfiddle.net/ozrentk/umngj/1/ < / a>. Il se comporte bien lorsque les étiquettes d'en-tête sont suffisamment larges et des candidats à la page sont des candidats à la page. Sinon, ça devient laid et je n'aime pas ça. Je crois que nous avons échoué pendant le test.
Donc, la bonne réponse est incorrecte? (Désolé si j'ai mal compris votre commentaire, mon cerveau est fatigué pour le moment). . Quoi qu'il en soit, je suis sûr que c'est toujours incorrect parce que vous avez dit
Un problème que j'ai trouvé est lorsque j'ajouterai d'autres éléments après son affichage, l'en-tête devient mal aligné code> et le code de la réponse cochée ne peut rien faire la dynamique. exigence.
Oui, la bonne réponse est en fait incorrecte :( C'est arrivé parce que je testais votre solution correctement et que quelqu'un d'autre était la solution Martyn0627 alors que j'étais 4 jours en vacances. Je dois essayer de faire les choses avec Martyn0627 maintenant premier.
@OzrentkalceckRznaric Cochez cette page fiddle.jshell.net/quqyu/28/show (c'est la source du violon iframe). J'ai essayé d'utiliser vos en-têtes et vos échantillons de données. Dans une grande fenêtre, c'est bien. Mais dans une fenêtre plus petite, cela pourrait créer des problèmes. Quelle est la petite fenêtre de la page?
Je suis incapable de définir la hauteur de ul. Comment définir la hauteur de UL?
Si vous redimensionnez la largeur de la table en redimensionnant votre navigateur, les colonnes d'en-tête ne sont pas alignées sur les données dans la zone défilée. Pas bon.
votes
Je pense que j'ai résolu ce problème en créant une deuxième section d'en-tête. Pour démarrer, j'ai dupliqué le "Testheader" HTML:
@OzrentkalceckRznaric était-ce de toute utilisation?
Je crois que c'est ça. Je suis désolé, je n'ai pas eu le temps de regarder cela jusqu'à présent, mais demain si des tests passent, je l'incorporerai dans la solution que nous mettons en œuvre.
Votre solution a passé le test, mais nous n'avons pas compté dans le cas lorsque le contenu est plus large que l'étiquette et il n'y a pas de blancheurs pour les pauses de la page. Ensuite, l'en-tête devient mal aligné, comme Ceci . Un autre problème est que le contenu de WhitSpace ordinaire devient plus large que l'étiquette, et la table n'est pas dans un conteneur de largeur constante, comme Ceci . Y a-t-il une possibilité de résoudre ces deux problèmes?
Articles qui pourrait vous intéresser :
Le bootstrap de Twitter a-t-il des classes utilitaires de taille de police?Mettez en surbrillance l'élément d'étiquette après avoir cliqué sur la case à cocher
Changer la direction de défilement de la page Web sur la version mobile
Target first-child css styled-components