İhtiyacınız olan şey:
1) kaydırma yalnızca içerik kaydırma penceresinden daha büyük olduğunda gerçekleştiği için sınırlı yükseklikte bir tablo gövdesine sahip olabilir . Ancak tbodyboyutlandırılamaz ve bunu blockyapmak için bunu görüntülemeniz gerekir :
tbody {
overflow-y: auto;
display: block;
max-height: 10em;
}
2) Tablo üstbilgisi ve tablo gövdesi sütun genişliklerini yeniden eşitleyin , çünkü ikincisini blockalakasız bir öğe haline getirin. Bunu yapmanın tek yolu , aynı sütun genişliğini her ikisine de uygulayarak senkronizasyonu simüle etmektir .
Ancak, tbodykendisi bir blockşimdi olduğu için, artık a gibi davranamaz table. tableSütunları doğru şekilde görüntülemek için hala bir davranışa ihtiyacınız olduğundan, çözüm, satırlarınızın her birinin ayrı tableURL'ler olarak görüntülenmesini istemektir :
thead {
display: table;
width: 100%;
}
tbody tr {
display: table;
width: 100%;
}
(Bu tekniği kullanarak artık satırlara yayılamayacağınızı unutmayın).
Bunu yaptıktan sonra, sütun genişliklerini hem theadve hem de sütunlarında aynı genişliğe sahip olacak şekilde zorlayabilirsiniz tbody. Bunu yapamazsın:
- her bir sütun için ayrı ayrı (belirli CSS sınıfları veya satır içi stil yoluyla), her tablo örneği için yapılması oldukça yorucu;
- tüm sütunlar için aynı şekilde (
th, td { width: 20%; }örneğin 5 sütununuz varsa), bu daha pratiktir (her tablo örneği için genişlik ayarlamaya gerek yoktur) ancak herhangi bir sütun sayısı için çalışamaz
- sabit bir tablo düzeni aracılığıyla herhangi bir sütun için eşit olarak sayılır.
Eklemeyi gerektiren son seçeneği tercih ederim:
thead {
table-layout: fixed;
}
tbody tr {
table-layout: fixed;
}
th, td {
width: auto;
}
Burada , bu sorunun cevabından ayrılmış bir demo izleyin .