Таблица HTML: отображать горизонтальное двоичное дерево через rowspan?

Я хотел бы создать следующее представление двоичного дерева с помощью элемента HTML table (рисунок ниже был создан в редакторе изображений, а не в HTML):

Учитывая мой предыдущий опыт работы с атрибутом colspan, успешно создающим подобные вертикальные деревья, кажется, что это вполне возможно, используя атрибут rowspan с чем-то вроде следующего кода:

<!DOCTYPE html>
<html>
<body>
<table border = "1" cellpadding = "0" cellspacing = "0">
    <tr>
        <td rowspan = "4">1</td>
        <td rowspan = "2">2</td>
        <td rowspan = "1">4</td>
    </tr>
    <tr>
        <td rowspan = "2">3</td>
        <td rowspan = "1">5</td>
    </tr>
    <tr>
        <td rowspan = "1">6</td>
    </tr>
    <tr>
        <td rowspan = "1">7</td>
    </tr>
</table>
</body>
</html>

Однако результат приведенного выше кода не отображается должным образом ни в одной из последних версий каждого современного браузера, который я пробовал (Chrome, Safari, Firefox, Brave):

Я делаю что-то неправильно? Возможно ли это с таблицей HTML? Вроде должно быть, но не работает...


Примечания:

  • Я бы очень хотел сделать таблицу HTML, если это возможно.

  • На самом деле я хочу расширить это дерево на большее количество поколений (возможно, даже до 10 или 12 или около того), поэтому в идеале для этого подойдет любое решение.

  • Я экспериментировал с новыми функциями «CSS Grid» — хороший инструмент, но CSS Grid кажется плохо подходящим для расширения такого дерева на многие поколения, поскольку кажется, что каждая ячейка сетки требует явной спецификации CSS grid-row-start для правильного размещения. в нужной строке дерева (а не просто перемещаться в следующую доступную естественную позицию, как с таблицами HTML). Если я расширим эту древовидную диаграмму на поколения, содержащие сотни или тысячи ячеек, то объявление явных значений grid-row-start для каждой ячейки покажется непрактичным (или, по крайней мере, крайне нежелательным).

Мне кажется, вы слишком легкомысленно относитесь к CSS Grid. См. jsbin.com/vukehuzizo/1/edit?html,css,output, чтобы узнать, как можно сделать макет. Надеюсь, вы видите закономерность и то, как ее можно распространить на сотни или тысячи клеток.

Alohci 10.04.2023 07:14

Хороший! Я думаю, что все еще предпочитаю html-таблицу, но я думаю, что это была бы приемлемая замена (тогда как мое первоначальное понимание CSS Grid было в основном неприемлемым, потому что оно было значительно хуже).

Todd Ditchendorf 10.04.2023 20:19
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
2
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Типично: формулировка и перечитывание вопроса заставили меня осознать ошибку в моем HTML-коде.

Следующий (слегка измененный) код работает так, как ожидалось/желалось:

<!DOCTYPE html>
<html>
<body>
<table border = "1" cellpadding = "0" cellspacing = "0">
    <tr>
        <td rowspan = "4">1</td>
        <td rowspan = "2">2</td>
        <td rowspan = "1">4</td>
    </tr>
    <tr>
        <td rowspan = "1">5</td>
    </tr>
    <tr>
        <td rowspan = "2">3</td>
        <td rowspan = "1">6</td>
    </tr>
    <tr>
        <td rowspan = "1">7</td>
    </tr>
</table>
</body>
</html>

Другие вопросы по теме