Я пытаюсь создать накладку загрузки поверх tbody (и только tbody). Мое текущее решение состоит в том, чтобы добавить tr как последний элемент tbody и установить его как position: absolute и установить tbody как position: relative.
table {
width: 100%;
}
tbody {
position: relative;
}
.overlay {
position: absolute;
top: 0;
width: 100%;
height: 100%;
background-color: rgba(200, 200, 200, 0.7);
}
<table>
<thead>
<tr>Label</tr>
</thead>
<tbody>
<tr><td>Data</td></tr>
<tr><td>Data</td></tr>
<tr class="overlay">
<td>My overlay</td>
</tr>
</tbody>
</table>
Ожидаемое поведение заключается в том, что наложение охватывает тём, но не thead. Также этот оверлей должен содержать некоторое содержимое (кнопка обновления), поэтому покрытие каждого td не является опцией.
Мое решение прекрасно работает в Firefox, но не webkit. Webkit каким-то образом игнорирует позицию: относительная по тегу tbody, и, таким образом, наложение покрывает всю таблицу и многое другое.
RESOLVED Мне удалось сделать этот подход, добавив отображение: table on tbody
вам нужно удалить позицию относительно тела и вместо нее на столе.
table {
width: 100%;
position: relative;
}
.overlay {
position: absolute;
top: 0;
width: 100%;
height: 100%;
background-color: rgba(200, 200, 200, 0.7);
}
<table>
<thead>
<tr>Label</tr>
</thead>
<tbody>
<tr><td>Data</td></tr>
<tr><td>Data</td></tr>
<tr class="overlay">
<td><div>My overlay</div></td>
</tr>
</tbody>
</table>
Использование CSS calc должно помочь в этом. Поддержка тоже хороша для собственности.
Вам просто нужно сбалансировать calc с верхним свойством.
Таким образом, ваш CSS стал бы:
table {
width: 100%;
position: relative;
}
.overlay {
position: absolute;
top: 25px;
width: 100%;
height: -webkit-calc(100% - 25px);
height: calc(100% - 25px);
background-color: rgba(200, 200, 200, 0.7);
}
Вот рабочий пример:
table {
width: 100%;
position: relative;
}
.overlay {
position: absolute;
top: 25px;
width: 100%;
height: -webkit-calc(100% - 25px);
height: calc(100% - 25px);
background-color: rgba(200, 200, 200, 0.7);
}
<table>
<thead>
<tr><td>Label</td></tr>
</thead>
<tbody>
<tr><td>Data</td></tr>
<tr><td>Data</td></tr>
<tr class="overlay">
<td>My overlay</td>
</tr>
</tbody>
</table>
Обновленный ответ с использованием CSS Calc.