Я применил column-count: 2 к DIV-контейнеру, окружающему таблицу, и display: block к элементам таблицы.
Но я не уверен, как заставить заголовок растянуться на всю ширину строки
РЕДАКТИРОВАНИЕ.
Я только что понял, что функционально мне придется либо продублировать эту строку заголовка, оставить только «Категории», либо просто скрыть её полностью…
Я немного поэкспериментировал с обоими вариантами, и кажется, что разделение таблицы категорий пополам, а не последовательно, лучше подходит для наших целей.
Однако сложно контролировать, где именно должно происходить разделение.
Но только когда я искусственно поместил категории слева в div (чтобы предотвратить слишком раннее разделение, иначе корневая категория Measure переместится в правый столбец):
То, о чём вы спрашиваете, кажется сложным и, возможно, потребует некоторой магии JavaScript.
С свойством CSS column, я уверен, что категории не будут выровнены по горизонтали (если только вы не зададите фиксированную высоту), как это делается с flexbox, и это выглядит не очень красиво.
Мне удалось добиться того, что вы хотите, но это немного «костыльно»:
Я использовал свой предыдущий CSS, затем добавил пустой <tr> (что, как я полагаю, можно сделать одной строкой JS) и установил свойство order, чтобы изменить порядок div-элементов. Последнее можно сделать только через CSS, нацеливаясь на каждое значение HTML data-category-id. Вот результат:
Обратите внимание, что, вероятно, вам придётся менять CSS и/или JS каждый раз, когда вы будете добавлять или удалять категорию.
edit: если вам нужен только один или два дополнительных пустых элемента, вам не обязательно использовать JS для добавления <tr>, вы также можете использовать :after и/или :before следующим образом:
Спасибо, всё получилось довольно неплохо Мы не против того, чтобы вручную управлять категориями, так что всё в порядке.
Конечный результат можно увидеть на нашем форуме.