Наиболее распространенный способ написания таблицы HTML с вертикальными заголовками?

Привет, все прошло некоторое время, так как я что-то задал, это то, что меня беспокоило какое-то время, сам вопрос находится в названии:

Каков ваш предпочтительный способ написания таблиц HTML с вертикальными заголовками?

По вертикальному заголовку я имею в виду, что таблица имеет тег заголовка (<th>) на левой стороне (обычно)

Данные данных данных заголовка 1
Данные заголовка 2 данных

Данные заголовка 3 данных

Они выглядят так, пока я придумал две опции

Первый вариант

   
    <table id="vertical-1">
            <caption>First Way</caption>
            <tr>
                <th>Header 1</th>
                <td>data</td><td>data</td><td>data</td>
            </tr>
            <tr>
                <th>Header 2</th>
                <td>data</td><td>data</td><td>data</td>
            </tr>
            <tr>
                <th>Header 2</th>
                <td>data</td><td>data</td><td>data</td>
            </tr>
        </table>
   

Основное преимущество этого способа состоит в том, что у вас есть заголовки справа (фактически слева) рядом с данными, которые он представляет, что мне не нравится, однако, теги <thead>, <tbody> и <tfoot> отсутствует, и нет никакого способа включить их, не разбивая ничели, помещенные вместе элементы, которые приводят меня ко второму варианту.

Второй вариант

   
        <style type="text/css">
            #vertical-2 thead,#vertical-2 tbody{
                display:inline-block;
            }

        </style>
        <table id="vertical-2">
            <caption>Second Way</caption>
            <thead>
                <tr>
                    <th colspan="3">Header 1</th>
                </tr>
                <tr>
                    <th colspan="3">Header 2</th>
                </tr>
                <tr>
                    <th colspan="3">Header 3</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>row 1</td>
                    <td>row 1</td>
                    <td>row 1</td>
                </tr>
                <tr>
                    <td>data</td>
                    <td>data</td>
                    <td>data</td>
                </tr>
                <tr>
                    <td>data</td>
                    <td>data</td>
                    <td>data</td>
                </tr>
            </tbody>
            <tfoot>
                <tr>
                    <td colspan="4">Footer</td>
                </tr>
            </tfoot>
        </table>
   

Основное преимущество здесь состоит в том, что у вас есть полностью описательная таблица html, недостатки в том, что правильное представление требует немного CSS для тегов tbody и thead и что связь между заголовками и данными не является очень ясный, поскольку у меня возникли сомнения при создании разметки.


Таким образом, оба способа отображают таблицу, как это должно быть, здесь ядро:

render
С заголовками слева или справа, если вы предпочтете это, любые предложения, альтернативы, проблемы с браузером?

Ответ 1

Во-первых, ваш второй вариант не совсем корректный HTML в том смысле, что все строки (TR) в таблице должны содержать равное количество столбцов (TD). Ваш заголовок имеет 1, в то время как тело имеет 3. Вы должны использовать атрибут colspan, чтобы исправить это.

Ссылка:. Сеансы THEAD, TFOOT и TBODY должны содержать одинаковое количество столбцов. "- Последний абзац раздела 11.2.3.

С учетом сказанного первый вариант - лучший подход, на мой взгляд, потому что он читается независимо от того, включен ли CSS. Некоторые браузеры (или поисковые роботы) не выполняют CSS и, как таковые, это сделает ваши данные бессмысленными, поскольку заголовок будет представлять столбцы вместо строк.

Ответ 2

Первый вариант... Я думаю, что это лучший и простой подход.

Ответ 3

Честно говоря, вариант 1. Я бы предложил вам посмотреть на этот пример из W3.org(ссылка ниже). Я думаю, что этот метод является лучшим, потому что таким образом ваши заголовки также будут интерпретироваться прямо на экране.

https://www.w3.org/WAI/tutorials/tables/one-header/#table-with-header-cells-in-the-first-column-only

Ответ 4

[Лучшая ссылка] [http://www.broculos.net/2013/12/vertical-text-for-table-headers-with-css.html]

div.vertical {
  margin-left: -85px;
  position: absolute;
  width: 215px;
  transform: rotate(-90deg);
  -webkit-transform: rotate(-90deg);
  /* Safari/Chrome */
  -moz-transform: rotate(-90deg);
  /* Firefox */
  -o-transform: rotate(-90deg);
  /* Opera */
  -ms-transform: rotate(-90deg);
  /* IE 9 */
}

th.vertical {
  height: 220px;
  line-height: 14px;
  padding-bottom: 20px;
  text-align: left;
}
<table>
  <thead>
    <tr>
      <th class="vertical">
        <div class="vertical">Really long and complex title 1</div>
      </th>
      <th class="vertical">
        <div class="vertical">Really long and complex title 2</div>
      </th>
      <th class="vertical">
        <div class="vertical">Really long and complex title 3</div>
      </th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Example</td>
      <td>a, b, c</td>
      <td>1, 2, 3</td>
    </tr>
  </tbody>
</table>