HTML Таблица справки по чередующемуся количеству ячеек

StackOverflow https://stackoverflow.com/questions/1619179

  •  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">&nbsp;</td><td></td><td></td><td></td></tr>
<tr><td class="brick">&nbsp;</td><td class="brick">&nbsp;</td><td></td><td></td></tr>
<tr><td class="brick">&nbsp;</td><td class="brick">&nbsp;</td><td class="brick">&nbsp;</td><td></td></tr>
<tr><td class="brick">&nbsp;</td><td class="brick">&nbsp;</td><td class="brick">&nbsp;</td><td class="brick">&nbsp;</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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top