Aplicando column-count: 2 ao DIV que envolve a tabela e display: block aos elementos da tabela.
Mas não tenho certeza de como forçar o cabeçalho a ocupar toda a linha
EDIT.
Acabei de perceber que, funcionalmente, eu teria que duplicar essa linha de cabeçalho, deixar apenas “Categorias” ou simplesmente ocultá-la toda…
Testei um pouco ambas as opções e parece que dividir a tabela de categorias ao meio, em vez de fazê-lo sequencialmente, é melhor para o nosso propósito.
No entanto, é complicado controlar onde a divisão deve ocorrer.
Mas apenas quando coloquei artificialmente as categorias à esquerda dentro de uma div (para evitar que a divisão ocorresse muito cedo; caso contrário, a categoria raiz “Measure” iria para a coluna da direita):
O que você está pedindo parece complicado e pode exigir algum truque com JavaScript.
Com a propriedade CSS column, tenho certeza de que as categorias não ficarão alinhadas horizontalmente (a menos que você defina uma altura fixa), como acontece com o flexbox, e não fica muito bonito.
Consegui o que você quer, mas é um pouco hacky:
Usei meu CSS anterior, depois adicionei um <tr> vazio (o que acredito que possa ser feito com uma única linha de JS) e defini a propriedade order para alterar a ordem das divs. Este último pode ser feito apenas via CSS, mirando cada valor HTML data-category-id. Eis o resultado:
Observe que provavelmente terá que alterar o CSS e/ou o JS toda vez que adicionar ou remover uma categoria.
edição: se precisar apenas de um ou dois elementos vazios adicionais, não é necessário usar JS para adicionar um <tr>; você também pode usar um :after e/ou :before assim:
Obrigado, funcionou bem Não nos importamos de ter que gerenciar as categorias em detalhes, então está tudo bem.
O resultado final pode ser visto no nosso Fórum.