En appliquant column-count: 2 au DIV entourant le tableau et display: block aux éléments du tableau.
Mais je ne suis pas sûr de savoir comment forcer l’en-tête à s’étendre sur toute la ligne
EDIT.
Je viens de réaliser que, fonctionnellement, je devrais soit dupliquer cette ligne d’en-tête, ne laisser que « Catégories », soit simplement tout masquer…
J’ai un peu testé les deux options, et il semble que diviser la table des catégories en deux plutôt que de les placer séquentiellement soit mieux adapté à notre besoin.
Cependant, il est délicat de contrôler où la division doit s’opérer.
Mais uniquement lorsque j’ai placé artificiellement les catégories de gauche dans une div (pour éviter qu’elles ne se divisent trop tôt, sinon la catégorie racine « Measure » se retrouve dans la colonne de droite) :
Ce que vous demandez semble délicat et pourrait nécessiter un peu de magie JavaScript.
Avec la propriété CSS column, je suis convaincu que les catégories ne seront pas alignées horizontalement (sauf si vous définissez une hauteur fixe), contrairement à ce qui se fait avec flexbox, et le résultat n’est pas très esthétique.
J’ai réussi à obtenir ce que vous voulez, mais c’est un peu bidouillé :
J’ai utilisé mon CSS précédent, puis ajouté un <tr> vide (ce qui, je pense, peut être fait avec une seule ligne de JavaScript) et défini la propriété order pour changer l’ordre des div. Ce dernier point peut être fait uniquement via CSS en ciblant chaque valeur HTML data-category-id. Voici le résultat :
Notez que vous devrez probablement modifier le CSS et/ou le JavaScript à chaque fois que vous ajouterez ou supprimerez une catégorie.
edit : si vous avez besoin d’un ou deux éléments vides supplémentaires, vous n’avez pas besoin d’utiliser JavaScript pour ajouter un <tr>, vous pouvez aussi utiliser :after et/ou :before comme ceci :
Merci, cela s’est plutôt bien passé Nous n’avons aucun problème à devoir gérer les catégories de manière détaillée, donc tout va bien.
Le résultat final est visible sur notre Forum.