Ответ 1
Это поведение модели сжимающейся границы. Если для параметра border-collapse
установлено значение collapse
, ячейки разделяют границу с элементом edge, который является таблицей. Если он установлен в separate
, то ячейки имеют свою собственную границу.
Из этого ссылки: https://developer.mozilla.org/en/docs/Web/CSS/border-collapse
Свойство CSS с пограничным коллапсом определяет, будет ли граница таблицы разделяются или свертываются. В отдельной модели соседние ячейки каждый из них имеет свои собственные границы. В свернутой модели, смежной ячейки таблицы разделяют границы.
И из этой спецификации: http://www.w3.org/TR/CSS2/tables.html#border-conflict-resolution
В модели сжимающейся границы границы на каждом краю каждой ячейки могут быть заданы свойствами границы для множества элементов, которые встречаются на этом краю (ячейки, строки, группы строк, столбцы, группы столбцов, и самой таблицы)
Вот почему, когда вы переводите ячейки, перемещаются только ячейки, потому что они не имеют собственных границ и разделяют границы элемента edge (т.е. таблицы).
Если вам действительно нужно преобразовать и переместить ячейки th
, сохраните border-collapse
как separate
и индивидуально управляйте границами на td
/th
.
Что-то вроде этого:
table {
border-spacing: 0px;
border: 1px solid #333;
background: #efefef;
border-collapse: separate;
}
th,td { border: 1px solid #333; }
td { border-right: 0px; }
td:first-child { border-left: 0px; }
tbody > tr:last-child > td { border-bottom: 0px; }
th { background: #ccc; transform: translate(50px, 50px); }
<table>
<thead>
<tr>
<th>Test 1</th>
<th>Test 2</th>
<th>Test 3</th>
</tr>
</thead>
<tbody>
<tr>
<td>asdasd</td>
<td>adasdasd</td>
<td>adasdasd</td>
</tr>
</tbody>
</table>