Aplicando column-count: 2 al DIV que rodea la tabla y display: block a los elementos de la tabla.
Pero no estoy seguro de cómo forzar que el encabezado abarque toda la línea
EDIT.
Acabo de darme cuenta de que, funcionalmente, tendría que duplicar esta fila de encabezado, dejar solo “Categorías” o simplemente ocultarlo todo…
He probado un poco ambas opciones y parece que dividir la tabla de categorías a la mitad, en lugar de hacerlo de forma secuencial, es mejor para nuestro propósito.
Sin embargo, es complicado controlar dónde debe producirse la división.
Pero solo cuando coloqué artificialmente las categorías de la izquierda dentro de un div (para evitar que se dividiera demasiado pronto; de lo contrario, la categoría raíz “Measure” pasaría a la columna derecha):
Lo que estás pidiendo parece complicado y podría requerir algo de magia con JavaScript.
Con la propiedad CSS column, estoy seguro de que las categorías no se alinearán horizontalmente (a menos que establezcas una altura fija), como ocurre con flexbox, y no queda muy estético.
Logré lo que buscas, pero es un poco truculento:
Utilicé mi CSS anterior, luego añadí un <tr> vacío (lo cual creo que se puede hacer con una sola línea de JS) y establecí la propiedad order para cambiar el orden de los div. Esto último se puede hacer solo con CSS apuntando a cada valor HTML data-category-id. Aquí está el resultado:
Ten en cuenta que probablemente tendrás que modificar el CSS y/o JS cada vez que añadas o elimines una categoría.
edición: si solo necesitas uno o dos elementos vacíos adicionales, no hace falta usar JS para añadir un <tr>; también puedes usar :after y/o :before así:
¡Gracias, funcionó bastante bien! No nos importa tener que supervisar de cerca las categorías, así que todo está bien.
El resultado final se puede ver en nuestro Foro.