Подтвердить что ты не робот

Как семантически кодировать HTML-вложенную таблицу, которая выравнивает (и ассоциирует) с родительскими заголовками таблицы

Изменить: выбранный ответ содержит ссылку на рабочую скрипту, которую я смог создать без использования вложенной таблицы.

Я хочу семантически закодировать таблицу в HTML с макетом, как на картинке ниже. К сожалению, я не смог найти ничего подобного в сети.

enter image description here

Мне удалось заставить внешний вид вручную установить ширину ячеек, но я хочу убедиться, что код, который я создаю, имеет смысл, и я не думаю, что это дело, потому что без ручной установки ширины, стандартный рендеринг больше похож на следующий снимок.

enter image description here

Пока что возникший проблемный код выглядит следующим образом:

<table>
  <thead>
    <tr>
      <th scope="col">Type of Loss Dollar</th>
      <th scope="col">Reserve Amount</th>
      <th scope="col">Paid Amount</th>
      <th scope="col">Total This Loss</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colspan="3">
        <table>
          <tbody>
            <tr>
              <th scope="row">Medical</th>
              <td><input type="text" /></td>
              <td><input type="text" /></td>
            </tr><tr>
              <th scope="row">Indemnity</th>
              <td><input type="text" /></td>
              <td><input type="text" /></td>
            </tr><tr>
              <th scope="row">Expense</th>
              <td><input type="text" /></td>
              <td><input type="text" /></td>
            </tr>
          </tbody>
        </table>
      </td><td>
        TOTAL
      </td>
    </tr>
  </tbody>
</table>
4b9b3361

Ответ 1

Без изображений, которые трудно сказать, но я думаю, что лучшим решением, чем вложенные таблицы, было бы просто использовать атрибуты colspan и rowspan.

Изменить: видя изображения, которые я бы сказал, вы можете наиболее точно достичь этого, используя rowspancolspan способ, которым вы его уже используете).

Кроме того, вам не нужно устанавливать атрибут scope, если он "col" . По умолчанию используется значение "col" .

Изменить: поскольку Марат Таналин указывает, что значение атрибута scope по умолчанию - это auto, которое "делает ячейку заголовка применено к набору ячеек, выбранных на основе контекста". И что по моему опыту действует точно так же, как установка его на "col" (для прокрутчиков).

Изменить: Вот две замечательные статьи по разметке расширенных таблиц: http://www.456bereastreet.com/archive/200910/use_the_th_element_to_specify_row_and_column_headers_in_data_tables/ и http://www.456bereastreet.com/archive/200410/bring_on_the_tables/

Изменить: Вот скрипка, демонстрирующая желаемое поведение (по крайней мере визуально) и исходный код этой скрипки:

<table border="1">
  <thead>
    <tr>
      <th>Status</th>
      <th>Type of Loss Dollar</th>
      <th>Reserve Amount</th>
      <th>Paid Amount</th>
      <th>Total This Loss</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td rowspan="3">Open</td>
      <td>Medical</td>
      <td><input type="text" /></td>
      <td><input type="text" /></td>
      <td rowspan="3">TOTAL</td>
    </tr><tr>
      <td>Indemnity</td>
      <td><input type="text" /></td>
      <td><input type="text" /></td>
    </tr><tr>
      <td>Expense</td>
      <td><input type="text" /></td>
      <td><input type="text" /></td>
    </tr>
  </tbody>
</table>

Ответ 2

yep, как и все вышеприведенные взгляды, все это касается строк.

здесь перепишите код:

<table>
  <thead>
    <tr>
      <th>Type of Loss Dollar</th>
      <th>Reserve Amount</th>
      <th>Paid Amount</th>
      <th>Total This Loss</th>
      <th>Last Heading</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td rowspan="3"></td>
      <td>Medical</td>
      <td><input type="text" /></td>
      <td><input type="text" /></td>
      <td rowspan="3">TOTAL</td>
    </tr><tr>
      <td>Indemnity</td>
      <td><input type="text" /></td>
      <td><input type="text" /></td>
    </tr><tr>
      <td>Expense</td>
      <td><input type="text" /></td>
      <td><input type="text" /></td>
    </tr>
  </tbody>
</table>