Masquage de colonne avec classe

Lorsque l'on souhaite masquer une colonne d'une <table> la solution la plus couramment utilisée est de parcourir toutes les lignes de celle-ci et d'affecter une déclaration display:none à la cellule de la colonne concernée.

Il existe toutefois une méthode peut-être « plus élégante » qui consiste à ajouter/supprimer une classe CSS à la <table> et de laisser faire le moteur de rendu du navigateur.

La « barre de commande » ainsi que le CSS correspondant peuvent très bien être générés dynamiquement, comme dans l'exemple ci-dessous.

Exemple en action

PrénomNomDateEntrepriseFonctionAdresseAdresse mail
ChristophCasbourne09/13/1957ServicesTejon Ranch Co00281 Gina Terraceccasbourne0@oracle.com
TrudaBertelmot11/11/1985AccountingClipper Realty Inc.32178 Parkside Centertbertelmot1@domainmarket.com
DallonGoulding03/16/1977Research and DevelopmentGoldman Sachs Group, Inc. (The)1 Prairieview Roaddgoulding2@umn.edu
YoshikoDanielsky07/10/1997Business DevelopmentFB Financial Corporation47040 Spenser Roadydanielsky3@tmall.com
BerteDmitrienko11/17/1995MarketingArgan, Inc.44640 Hoffman Waybdmitrienko4@nasa.gov
ValentijnMeadmore08/02/1993Human ResourcesMGM Resorts International6 Monica Centervmeadmore5@ed.gov
SuzyFlewett10/25/1980Research and DevelopmentCeragon Networks Ltd.894 Forest Dale Pointsflewett6@icio.us
MordecaiJerrams10/13/1965TrainingSilicom Ltd2 Hallows Passmjerrams7@cnet.com
ClausSamwyse11/25/1974AccountingVerizon Communications Inc.38239 Gina Junctioncsamwyse8@xing.com
RafaeliaPedrol04/18/1975Research and DevelopmentSchneider National, Inc.97 Everett Plazarpedrol9@google.es
LitaLisimore06/08/1988Product ManagementSimmons First National Corporation2081 Birchwood Streetllisimorea@wiley.com
NoakMcPeice12/06/1974Product ManagementEyegate Pharmaceuticals, Inc.7315 Susan Pointnmcpeiceb@discovery.com

HTML généré et ajouté


  

CSS généré et ajouté


    

On utilise la pseudo-classe :nth-child(n) pour cibler la nième cellule, donc colonne, concernée.

Script de la page


  

Observations

On aurait également pu utiliser le même procédé appliqué à des éléments <col>, enfant d'un élément <colgroup>, en jouant cette fois avec la déclaration visibility:collapse, question de choix.

Il est bien sûr tout à fait possible de ne faire que l'affectation des événements en mettant le reste directement dans le code de la page mais c'est souvent des duplications pas forcément utiles.

L'usage des attributs de données, data-xxx, est une véritable bénédiction, on pourrait ainsi tout à fait prévoir d'exclure certaines colonnes en utilisant la présence/absence, par exemple, un attribut de donnée data-xxx particulier.