J'ai ce tableau que je ne peux pas modifier sa <tfoot>
HTML <tfoot>
, il est rendu avec une fonction PHP qui ne peut pas changer. Je ne peux donc pas changer le <tr>
à l'intérieur du <tfoot>
.
Comment puis-je déplacer la zone rouge (x1, x2) vers la droite avec juste du CSS?
https://jsfiddle.net/qL03728p/
<table cellspacing="0"> <thead> <tr> <th>thead 1</th> <th>thead 2</th> <th>thead 3</th> <th>thead 4</th> </tr> </thead> <tbody> <tr> <td>tbody 1</td> <td>tbody 2</td> <th>tbody 3</th> <th>tbody 4</th> </tr> </tbody> <tfoot> <tr> <td>x1</td> <td>x2</td> </tr> </tfoot> </table>
table { width: 100%; border-collapse: separate; } table td { border-top: 1px solid red; } thead { background: green; } tbody { background: yellow; } tfoot { background: red; }
3 Réponses :
Sans utiliser Javascript, c'est faisable mais pas de manière propre. (Ou pas que je sache)
Je ne pense pas que vous puissiez modifier la structure HTML uniquement avec du CSS, mais vous pouvez faire quelque chose comme ceci:
<table cellspacing="0"> <thead> <tr> <th>thead 1</th> <th>thead 2</th> <th>thead 3</th> <th>thead 4</th> </tr> </thead> <tbody> <tr> <td>tbody 1</td> <td>tbody 2</td> <th>tbody 3</th> <th>tbody 4</th> </tr> </tbody> <tfoot> <tr> <td>x1</td> <td>x2</td> </tr> </tfoot> </table>
Vous pouvez jouer avec la valeur de l'attribut "gauche" pour obtenir exactement ce dont vous auriez besoin.
table { width: 100%; border-collapse: separate; overflow:hidden; } table td { border-top: 1px solid red; } thead {background: green;} tbody {background: yellow;} tfoot { position:relative; background: red; left:25%; }
tfoot { position:relative; background: red; left:20%; }
Si vous aviez la possibilité d'utiliser Javascript, vous pourriez ajouter une balise "" à la structure, juste avant la balise "x1". Donnez-lui un nom de classe pour pouvoir le personnaliser avec css. Cela pousserait correctement les deux autres vers la gauche.
Comme le mentionne une autre réponse, cela semble assez difficile à réaliser sans l'utilisation de JavaScript, d'autant plus que les éléments td
sont absents du tfoot
.
Cependant, il existe une solution alternative utilisant une transformation qui utilise translateX
sur le tfoot
:
<table cellspacing="0"> <thead> <tr> <th>thead 1</th> <th>thead 2</th> <th>thead 3</th> <th>thead 4</th> </tr> </thead> <tbody> <tr> <td>tbody 1</td> <td>tbody 2</td> <th>tbody 3</th> <th>tbody 4</th> </tr> </tbody> <tfoot> <tr> <td>x1</td> <td>x2</td> </tr> </tfoot> </table>
Cela déplace l'élément entier de 50% vers la droite.
Comme l'a souligné @isherwood dans les commentaires, cela a pour effet secondaire inutile de créer un débordement horizontal sur la table. Cela peut simplement être corrigé en définissant overflow: hidden
sur la table CSS:
table { width: 100%; border-collapse: separate; overflow: hidden; } table td { border-top: 1px solid red; } thead {background: green;} tbody {background: yellow;} tfoot { background: red; transform: translateX(50%); }
Le voici dans un extrait de code de travail:
table { ... overflow: hidden; }
tfoot { background: red; transform: translateX(50%); }
Et une mise en garde: cette solution suppose des largeurs de colonne uniformes. Comme les tableaux sont fluides, dès qu'une colonne a un contenu plus large, les choses deviendront loufoques. Définissez des largeurs de colonne fixes pour éviter les problèmes.
Vous pouvez tromper par html comme ceci:
<tfoot> <tr> <td>x1</td> <td>x2</td> <td></td> <td></td> </tr> </tfoot>
ajouter simplement deux autres lignes vides
OP a déjà indiqué qu'il ne pouvait pas modifier le HTML - il recherche une solution uniquement CSS.
En outre, les cellules vides (et non les lignes) doivent être au début de la ligne.
Hé, tout va bien. Je ne suis pas un programmeur professionnel et j'ai 12 ans et demi. Et j'ai quelques erreurs d'anglais et de programmation, grâce à Isherwood et Martin. Par conséquent, je n'ai pas utilisé JAVASCRIPT et CSS car je ne veux pas utiliser beaucoup de programmation dans un problème simple. 😭 Je veux juste aider 😢
Sachez que l'alignement visuel sans alignement structurel laisse votre table avec une accessibilité médiocre. Ceux qui utilisent des technologies d'assistance (lecteurs d'écran, etc.) auront du mal à déchiffrer vos données. Déposer deux cellules de tableau vides avec PHP ou JavaScript est une bien meilleure solution.