Выровнять таблицу
у меня есть таблица, внутри строки еще одна таблица со своими строками, как можно выровнять их по уровню главной таблицы?
<table class="table table-bordered">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">First</th>
<th scope="col">Last</th>
<th scope="col">Handle</th>
<th scope="col">First</th>
<th scope="col">Last</th>
<th scope="col">Handle</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">1</th>
<td colSpan={6}>
<table class="table align-center">
<tr>
<td>Jacob</td>
<td>Thornton</td>
<td>@fat</td>
<td>Jacob</td>
<td>Thornton</td>
<td>@fat</td>
</tr>
</table>
<table>
<tr>
<td>Jacob</td>
<td>Thornton</td>
<td>@fat</td>
<td>Jacob</td>
<td>Thornton</td>
<td>@fat</td>
</tr>
</table>
</td>
</tr>
<tr>
<th scope="row">2</th>
<td>Jacob</td>
<td>Thornton</td>
<td>@fat</td>
<td>Jacob</td>
<td>Thornton</td>
<td>@fat</td>
</tr>
<tr>
<th scope="row">3</th>
<td>Larry</td>
<td>the Bird</td>
<td>@twitter</td>
<td>Jacob</td>
<td>Thornton</td>
<td>@fat</td>
</tr>
</tbody>
</table>
Ответы (1 шт):
Автор решения: DiD
→ Ссылка
У меня была похожая задача пару лет назад.
Я решил её с помощью тегов <div> без использования таблиц вообще.
.table {
display: table;
table-layout: fixed;
}
.table-caption {
display: table-caption;
}
.thead {
display: table-header-group;
}
.tbody {
display: table-row-group;
transition: all 200ms;
}
.tfoot {
display: table-footer-group;
}
.tcols {
display: table-column-group;
}
.tr {
display: table-row;
}
.col {
display: table-column;
}
.td {
display: table-cell;
padding: 3px;
}
input[type=checkbox]+.tbody>.tr:last-child>.td>label {
display: none;
}
input[type=checkbox]:checked+.tbody>.tr:last-child>.td>label {
display: inline;
}
input[type=checkbox]:checked+.tbody>.tr {
display: none;
}
input[type=checkbox]:checked+.tbody>.tr:last-child {
display: table-row;
}
input[type=checkbox] {
display: none;
}
label:before {
width: 16px;
height: 16px;
content: "\2716";
display: block;
}
input[type=checkbox]:checked+.tbody>.tr>.td>label:before {
content: "\271a";
}
.table {
border-left: 1px solid #eee;
border-top: 1px solid #000;
border-bottom: 1px solid #000;
}
.td {
border-right: 1px solid #eee;
border-bottom: 1px solid #eee;
}
.tbody>.tr>.td {
border-bottom: 0;
}
.thead>.tr>.td,
.tbody>.tr:last-child>.td,
.tbody>.tr:last-child>.td:first-child,
.tfoot .td {
border-bottom: 1px solid #000;
}
.thead>.tr:first-child>.td,
.tbody>.tr:first-child>.td,
.tbody>.tr:last-child>.td,
.tfoot .td,
input[type=checkbox]:checked+.tbody>.tr:last-child>.td:first-child {
border-top: 1px solid;
}
.tbody>.tr>.td:first-child {
border-bottom: 0;
}
.tbody>.tr:last-child>.td:first-child {
border-top: 0;
}
.tfoot .td,
input[type=checkbox]:checked+.tbody>.tr:last-child>.td:first-child {
border-top-color: #000;
}
<div class="table">
<div class="table-caption">Caption</div>
<div class="tcols">
<div class="col"></div>
<div class="col">Col0s</div>
<div class="col">Col1</div>
<div class="col">Col2</div>
<div class="col">Col3</div>
</div>
<div class="thead">
<div class="tr">
<div class="td"></div>
<div class="td">Col[0]</div>
<div class="td">Col[1]</div>
<div class="td">Col[2]</div>
<div class="td">Col[3]</div>
</div>
</div>
<input id="group-1" type="checkbox" />
<div class="tbody">
<div class="tr">
<div class="td"><label for="group-1"></label></div>
<div class="td">Data[0][0][0]</div>
<div class="td">Data[0][0][1]</div>
<div class="td">Data[0][0][2]</div>
<div class="td">Data[0][0][3]</div>
</div>
<div class="tr">
<div class="td"></div>
<div class="td">Data[0][1][0]</div>
<div class="td">Data[0][1][1]</div>
<div class="td">Data[0][1][2]</div>
<div class="td">Data[0][1][3]</div>
</div>
<div class="tr">
<div class="td"></div>
<div class="td">Data[0][2][0]</div>
<div class="td">Data[0][2][1]</div>
<div class="td">Data[0][2][2]</div>
<div class="td">Data[0][2][3]</div>
</div>
<div class="tr">
<div class="td"></div>
<div class="td">Data[0][3][0]</div>
<div class="td">Data[0][3][1]</div>
<div class="td">Data[0][3][2]</div>
<div class="td">Data[0][3][3]</div>
</div>
<div class="tr">
<div class="td"></div>
<div class="td">Data[0][4][0]</div>
<div class="td">Data[0][4][1]</div>
<div class="td">Data[0][4][2]</div>
<div class="td">Data[0][4][3]</div>
</div>
<div class="tr">
<div class="td"><label for="group-1"></label></div>
<div class="td">Subtotal[0][0]</div>
<div class="td">Subtotal[0][1]</div>
<div class="td">Subtotal[0][2]</div>
<div class="td">Subtotal[0][3]</div>
</div>
</div>
<input id="group-2" type="checkbox" />
<div class="tbody">
<div class="tr">
<div class="td"><label for="group-2"></label></div>
<div class="td">Data[1][0][0]</div>
<div class="td">Data[1][0][1]</div>
<div class="td">Data[1][0][2]</div>
<div class="td">Data[1][0][3]</div>
</div>
<div class="tr">
<div class="td"></div>
<div class="td">Data[1][1][0]</div>
<div class="td">Data[1][1][1]</div>
<div class="td">Data[1][1][2]</div>
<div class="td">Data[1][1][3]</div>
</div>
<div class="tr">
<div class="td"></div>
<div class="td">Data[1][2][0]</div>
<div class="td">Data[1][2][1]</div>
<div class="td">Data[1][2][2]</div>
<div class="td">Data[1][2][3]</div>
</div>
<div class="tr">
<div class="td"></div>
<div class="td">Data[1][3][0]</div>
<div class="td">Data[1][3][1]</div>
<div class="td">Data[1][3][2]</div>
<div class="td">Data[1][3][3]</div>
</div>
<div class="tr">
<div class="td"></div>
<div class="td">Data[1][4][0]</div>
<div class="td">Data[1][4][1]</div>
<div class="td">Data[1][4][2]</div>
<div class="td">Data[1][4][3]</div>
</div>
<div class="tr">
<div class="td"><label for="group-2"></label></div>
<div class="td">Subtotal[1][0]</div>
<div class="td">Subtotal[1][1]</div>
<div class="td">Subtotal[1][2]</div>
<div class="td">Subtotal[1][3]</div>
</div>
</div>
<div class="tfoot">
<div class="tr">
<div class="td"></div>
<div class="td">Total[0]</div>
<div class="td">Total[1]</div>
<div class="td">Total[2]</div>
<div class="td">Total[3]</div>
</div>
</div>
</div>
Знаю. Это не совсем тот ответ который вы ожидали. Но это один из способов верстки таблицы в таблице. Он вас может подтолкнуть к более изощренным интересным решениям.Например, отображение древовидной структуры таблицы как в Excel или просто добавить анимацию.
