Sabit bir başlık satırı ve ilk sütuna sahip gerçek bir saf CSS çözümü
Saf CSS kullanarak hem sabit bir başlık hem de sabit bir ilk sütun içeren bir tablo oluşturmak zorunda kaldım ve buradaki yanıtların hiçbiri istediğim gibi değildi.
position: sticky
Mülkiyet (Ben en çok kullanılan gördüğümüz gibi) ve Chrome, Firefox ve Kenar modern sürümlerinde tarafına üstüne hem yapışmasını desteklemektedir. Bu, sayfanızın herhangi bir yerine yerleştirilebilecek sabit başlıklara sahip bir tablo verme özelliğine div
sahip olan bir ile birleştirilebilir overflow: scroll
:
Masanızı bir kaba yerleştirin:
<div class="container">
<table></table>
</div>
overflow: scroll
Kaydırmayı etkinleştirmek için kapsayıcınızda kullanın :
div.container {
overflow: scroll;
}
As Dagmar Açıklamalarda belirttiği, konteyner ayrıca gerektirir max-width
ve max-height
.
Kullanım position: sticky
kenarına tablo hücrelerini olması sopa ve top
, right
veya left
sopa hangi kenar seçmek için:
thead th {
position: -webkit-sticky;
position: sticky;
top: 0;
}
tbody th {
position: -webkit-sticky;
position: sticky;
left: 0;
}
As MarredCheese yorum olarak bahsedilen ilk sütun içeriyorsa, <td>
yerine unsurları <th>
unsurları kullanabilirsiniz tbody td:first-child
CSS'nizde yerinetbody th
İlk sütundaki başlığın solda kalması için şunu kullanın:
thead th:first-child {
left: 0;
z-index: 1;
}
div {
max-width: 400px;
max-height: 150px;
overflow: scroll;
}
thead th {
position: -webkit-sticky;
position: sticky;
top: 0;
}
tbody th {
position: -webkit-sticky;
position: sticky;
left: 0;
}
thead th:first-child {
left: 0;
z-index: 2;
}
thead th {
background: #000;
color: #FFF;
z-index: 1;
}
tbody th {
background: #FFF;
border-right: 1px solid #CCC;
box-shadow: 1px 0 0 0 #ccc;
}
table {
border-collapse: collapse;
}
td,
th {
padding: 0.5em;
}
<div>
<table>
<thead>
<tr>
<th></th>
<th>headheadhead</th>
<th>headheadhead</th>
<th>headheadhead</th>
<th>headheadhead</th>
<th>headheadhead</th>
<th>headheadhead</th>
<th>headheadhead</th>
</tr>
</thead>
<tbody>
<tr>
<th>head</th>
<td>body</td>
<td>body</td>
<td>body</td>
<td>body</td>
<td>body</td>
<td>body</td>
<td>body</td>
</tr>
<tr>
<th>head</th>
<td>body</td>
<td>body</td>
<td>body</td>
<td>body</td>
<td>body</td>
<td>body</td>
<td>body</td>
</tr>
<tr>
<th>head</th>
<td>body</td>
<td>body</td>
<td>body</td>
<td>body</td>
<td>body</td>
<td>body</td>
<td>body</td>
</tr>
<tr>
<th>head</th>
<td>body</td>
<td>body</td>
<td>body</td>
<td>body</td>
<td>body</td>
<td>body</td>
<td>body</td>
</tr>
<tr>
<th>head</th>
<td>body</td>
<td>body</td>
<td>body</td>
<td>body</td>
<td>body</td>
<td>body</td>
<td>body</td>
</tr>
<tr>
<th>head</th>
<td>body</td>
<td>body</td>
<td>body</td>
<td>body</td>
<td>body</td>
<td>body</td>
<td>body</td>
</tr>
</tbody>
</table>
</div>
https://jsfiddle.net/qwubvg9m/1/