HTML Таблица справки по чередующемуся количеству ячеек
-
06-07-2019 - |
Вопрос
Что такое правильный HTML, если я хочу чередовать количество ячеек в каждой строке? Я хочу, чтобы 2 ячейки - это строки 1, 3 в строке 2, 2 в 3, 3 в 4 и т. Д. Аналогично кирпичной стене. У меня пока есть это, но это не так, как хотелось бы. Я знаю, что мог бы сделать это вложенные таблицы, но я могу сделать это с одной таблицей? Р>
<table border="1" cellpadding="10">
<tr>
<td colspan="1.5"> <span> X </span> </td>
<td colspan="1.5"> <span> X </span> </td>
</tr>
<tr>
<td> <span> X </span> </td>
<td> <span> X </span> </td>
<td> <span> X </span> </td>
</tr>
<tr>
<td colspan="1.5"> <span> X </span> </td>
<td colspan="1.5"> <span> X </span> </td>
</tr>
<tr>
<td> <span> X </span> </td>
<td> <span> X </span> </td>
<td> <span> X </span> </td>
</tr>
<tr>
<td colspan="1.5"> <span> X </span> </td>
<td colspan="1.5"> <span> X </span> </td>
</tr>
<tr>
<td> <span> X </span> </td>
<td> <span> X </span> </td>
<td> <span> X </span> </td>
</tr>
</table>
Решение
У вас не может быть доли ширины ячейки. Вместо этого вам нужно найти наименьший общий знаменатель для числа строк в нижнем и верхнем диапазонах. В вашем примере 2 и 3, то есть 6, то есть ваша таблица имеет ширину 6 ячеек, причем четные строки охватывают 3 каждая, а нечетные строки охватывают 2 каждая.
<table width="360">
<tr>
<td align="center" width="180" colspan="3">x</td>
<td align="center" width="180" colspan="3">x</td>
</tr>
<tr>
<td align="center" width="120" colspan="2">x</td>
<td align="center" width="120" colspan="2">x</td>
<td align="center" width="120" colspan="2">x</td>
</tr>
</table>
Обратите внимание, что ширина таблицы легко делится на 2 и 3, а ширина явно задается в каждой ячейке.
Другие советы
Один из способов сделать это - использовать CSS. Вы должны настроить таблицу, которая будет настолько большой, насколько вам нужно (например, 4x4), а затем применить стиль к каждой ячейке в зависимости от ситуации. Было бы два стиля, кирпичный и пустой, один означающий «кирпич» а другой означает пустое пространство.
Итак, вы можете сделать что-то вроде следующего:
<html>
<head>
<style type="text/css">
td { border-style:none; width:30px; }
td.brick { border-style:solid; border-color:black; border-width:1px; }
</style>
</head>
<body>
<table>
<tr><td class="brick"> </td><td></td><td></td><td></td></tr>
<tr><td class="brick"> </td><td class="brick"> </td><td></td><td></td></tr>
<tr><td class="brick"> </td><td class="brick"> </td><td class="brick"> </td><td></td></tr>
<tr><td class="brick"> </td><td class="brick"> </td><td class="brick"> </td><td class="brick"> </td></tr>
</table>
</body>
</html>
<table>
<tr>
<td colspan="2">X</td>
<td colspan="2">X</td>
<td colspan="2">X</td>
<td>Y</td>
</tr>
<tr>
<td>Y</td>
<td colspan="2">X</td>
<td colspan="2">X</td>
<td colspan="2">X</td>
</tr>
Я почти уверен, что colspans должен иметь целочисленное значение, дроби не допускаются. Вы можете попробовать добавить фиктивную ячейку с шириной 0, отступом 0, полем 0 на строке с 3 ячейками. Р>
<tr>
<td colspan="2"> <span> X </span> </td>
<td colspan="2"> <span> X </span> </td>
</tr>
<tr>
<td> <span> X </span> </td>
<td> <span> X </span> </td>
<td> <span> X </span> </td>
<td><!-- dummy !--></td>
</tr>