построение html таблиц

270
15 октября 2017, 22:09

как сделать такую таблицу? кто может объяснить работу тегов tr и td и атрибутов: rowspan и colspan.Как я могу сделать такую таблицу? Что нужно считать?

Answer 1

Пример с применением только базовых атрибутов табличек:

<table width=100% border=5> 
  <tr> 
    <td rowspan=4> 1 </td> 
    <td rowspan=4> 2 </td> 
    <td colspan=3 rowspan=2> 3 </td> 
    <td colspan=3> 4 </td> 
  </tr> 
 
  <tr> 
    <td colspan=3> 5 </td> 
  </tr> 
 
  <tr> 
    <td rowspan=2> 6 </td> 
    <td rowspan=2> 7 </td> 
    <td rowspan=2> 8 </td> 
    <td colspan=2> 9 </td> 
    <td rowspan=2> 10 </td> 
  </tr> 
 
  <tr> 
    <td> 11 </td> 
    <td> 12 </td> 
  </tr> 
 
  <tr> 
    <td rowspan=5> 13 </td> 
    <td> 14 </td> 
    <td> 15 </td> 
    <td> 16 </td> 
    <td> 17 </td> 
    <td> 18 </td> 
    <td> 19 </td> 
    <td rowspan=5> 20 </td> 
  </tr> 
 
  <tr> 
    <td rowspan=2> 21 </td> 
    <td> 22 </td> 
    <td> 23 </td> 
    <td> 24 </td> 
    <td> 25 </td> 
    <td> 26 </td> 
  </tr> 
 
  <tr> 
    <td> 27 </td> 
    <td> 28 </td> 
    <td> 29 </td> 
    <td> 30 </td> 
    <td> 31 </td> 
  </tr> 
 
  <tr> 
    <td> 32 </td> 
    <td> 33 </td> 
    <td> 34 </td> 
    <td> 35 </td> 
    <td> 36 </td> 
    <td> 37 </td> 
  </tr> 
 
  <tr> 
    <td colspan=4> 38 </td> 
    <td> 39 </td> 
    <td> 40 </td> 
  </tr> 
</table>

Answer 2

Как уже написали, colspan - объединяет ячейки по горизонтали (колонки), rowspan - по вертикали (строки). Разберем на предложенном Вами примере. Берем первую ячейку, смотрим, подсчитываем - на её высоте сколько различных строк помещается - получается, что 4. пишем: <td rowspan=4>. Сколько столбцов? Один - можно написать, конечно, colspan=1, но это некрасиво и мне лень, поэтому ничего не будем дописывать. Следующая ячейка в строчке - аналогично, <td rowspan=4>. Далее еще круче - она занимает в строчку 3 и в столбик 2, записываем <td rowspan=2 colspan=3. Последняя - <td colspan=3>.

Переходим ко второй строчке. Но начинаем не с самой левой ячейки - её мы уже упомянули, проходя предыдущую строчку. Но что остается тогда? Да только одна ячейка, все остальные мы "прошли" на предыдущей строке. Эта ячейка занимает 3 в ряд: <td colspan=3>.

Аналогично дальше.

А вот схема, которая требовалась в вопросе (стиль просто какой-то рандомный, чтобы видно было хотя бы че-то)

table { 
  border-collapse: collapse; 
} 
 
td, th { 
  border: 2px solid black; 
  padding: 0.5rem; 
  text-align: left; 
}
<table> 
  <colgroup width="80"/> 
  <colgroup width="100"/> 
  <colgroup width="90"/> 
  <colgroup width="40"/> 
  <colgroup width="110"/> 
  <colgroup width="100"/> 
  <colgroup width="90"/> 
  <colgroup width="130"/> 
<tr> 
    <td rowspan=4></td> 
    <td rowspan=4></td> 
    <td colspan=3 rowspan=2></td> 
    <td colspan=3></td> 
</tr> 
<tr> 
    <td colspan=3></td> 
</tr> 
<tr> 
  <td rowspan=2></td> 
  <td rowspan=2></td> 
  <td rowspan=2></td> 
  <td colspan=2></td> 
  <td rowspan=2></td> 
</tr> 
<tr> 
  <td></td> 
  <td></td> 
</tr> 
<tr> 
  <td rowspan=5></td> 
  <td></td> 
  <td></td> 
  <td></td> 
  <td></td> 
  <td></td> 
  <td></td> 
  <td rowspan=5></td> 
</tr> 
<tr> 
  <td rowspan=2></td> 
  <td></td> 
  <td></td> 
  <td></td> 
  <td></td> 
  <td></td> 
</tr> 
<tr> 
  <td></td> 
  <td></td> 
  <td></td> 
  <td></td> 
  <td></td> 
</tr> 
<tr> 
  <td></td> 
  <td></td> 
  <td></td> 
  <td></td> 
  <td></td> 
  <td></td> 
</tr> 
<tr> 
  <td colspan=4></td> 
  <td></td> 
  <td></td> 
</tr> 
</table>

Answer 3

tr создает горизонтальную строку. td разделяет ее на колонки.

colspan=n объединяет n колонок. rowspan=m объединяет m строк.

что считать, какой алгоритм действий нужно соблюдать?

Посчитайте максимальное количество строк в одной колонке - это количество tr'ов. После этого посчитайте максимальное количество колонок в одной строке. Это будет количество td'ов, которые нужно поместить в каждый из tr'ов. Дальше некоторым строкам и колонкам, которые занимают сразу несколько строк или колонок добавляете rowspan или colspan соответственно, с числом, равным количеству строк или колонок, которые объединены.

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

READ ALSO
SQL внутри python multiprocessing. Как?

SQL внутри python multiprocessing. Как?

Такая проблемаВот схематичный код:

283
Не работает запрос на веб сервере

Не работает запрос на веб сервере

Здравствуйте! Есть запрос:

288
out of memory kill process (mysqld)

out of memory kill process (mysqld)

Здравствуйте, есть маленькая машина VPS на DigitalOcean (1lvl, 512 ОЗУ), настроена самостоятельно не опытным сисадмином (я), на ней стоит сайт, посещаемость...

256