Mam problem podczas ustawiania przewijania przepełnienia wysokości tbody.
<style>
tbody{
height:50px;display:block;overflow:scroll
}
</style>
<h3>Table B</h3>
<table style="border: 1px solid red;width:300px;display:block">
<thead>
<tr>
<td>Name</td>
<td>phone</td>
</tr>
</thead>
<tbody style='height:50px;display:block;overflow:scroll'>
<tr>
<td>AAAA</td>
<td>323232</td>
</tr>
<tr>
<td>BBBBB</td>
<td>323232</td>
</tr>
<tr>
<td>CCCCC</td>
<td>3435656</td>
</tr>
</tbody>
</table>
Chcę tabeli B, takiej jak tabela A z przewijaniem przepełnienia.
Każda pomoc zostanie doceniona.
Wielkie dzięki, M.
Odpowiedzi:
jeśli chcesz
tbody
pokazać zwój, zamień go w plikblock
.Aby zachować zachowanie
table
, zamień siętr
wtable
.spryskać równomiernie komórki, użyj
table-layout:fixed;
PRÓBNY
CSS do testu HTML:
Jeśli
tbody
nie pokazują zwój, ponieważ zawartość jest mniejsza niżheight
lubmax-height
ustawić w dowolnym momencie przewijania z:overflow-y:scroll;
. DEMO 2źródło
overflow:auto
przez,overflow-y: scroll
aby nagłówki nie pozostały 1em po lewej, nawet jeśli treść nie wymaga paska przewijania.Jest to prosty sposób na użycie paska przewijania do treści tabeli
źródło
width: 100px
dotd, th
środkatbody, thead
Innym podejściem jest zawinięcie tabeli w przewijalny element i ustawienie komórek nagłówka tak, aby przylegały do góry.
Zaletą tego podejścia jest to, że nie musisz zmieniać wyświetlania w tbody i możesz pozostawić przeglądarkę, aby obliczyła szerokość kolumny, zachowując jednocześnie szerokość komórek nagłówka zgodnie z szerokością kolumn komórek danych.
źródło
height: 100%
tfoot
z lepką dolną pozycją 0 i działa to jak urok. Świetna odpowiedź!Domyślnie
overflow
nie ma zastosowania do elementów grupy tabeli, chyba że daćdisplay:block
się<tbody>
też trzeba daćposition:relative
idisplay: block
do<thead>
. Sprawdź DEMO .źródło
Najprostsze ze wszystkich rozwiązań:
Dodaj poniższy kod w CSS:
źródło
tbody tr
elementów na stronie. Zmiana na:.tableClassName thead, .tableClassName tbody tr {...}
Zmień kod drugiej tabeli, jak poniżej.
JSFIDDLE DEMO
źródło
W moim przypadku chciałem mieć responsywną wysokość tabeli zamiast stałej wysokości w pikselach, jak pokazują inne odpowiedzi. W tym celu użyłem właściwości procentu widocznej wysokości i przepełnienia na div zawierającym tabelę:
W ten sposób tabela będzie się powiększać wraz ze zmianą rozmiaru okna.
źródło
W oparciu o tę odpowiedź , oto minimalne rozwiązanie, jeśli już używasz Bootstrap:
Testowane na Bootstrap v3
źródło
Domyślam się, że to, co próbujesz zrobić, to utrzymać nagłówek na stałe i przewijać treść. Możesz przewijać treść w 2 kierunkach:
tbody
tagu, ponieważ przypisaniedisplay:block
lubdisplay:inline-block
zepsuje układ tabeli.Oto rozwiązanie wykorzystujące
divs
: JSFiddleHTML:
CSS:
Wyjaśnienie:
Masz
sliding wrapper
który będzie zawierał wszystkie dane.Zwróć uwagę na następujące kwestie:
Jest różnica 17 pikseli, ponieważ musimy wziąć pod uwagę szerokość paska przewijania.
źródło
Webkit wydaje się używać wewnętrznie
display: table-row-group
dlatbody
tagu. Obecnie występuje błąd w ustawianiu wysokości: https://github.com/w3c/csswg-drafts/issues/476Miejmy nadzieję, że wkrótce zostanie to rozwiązane.
źródło
HTML:
CSS:
to również zadziała:
źródło
Tworzenie przewijanych tabel jest zawsze wyzwaniem. Jest to rozwiązanie, w którym tabela jest przewijana zarówno w poziomie, jak iw pionie ze stałą wysokością na korpusie, co powoduje, że theader i tbody się „przyklejają” (bez wyświetlacza: lepki). Dodałem „duży” stół, żeby pokazać. Inspirację G-Cyrillusa zainspirował mnie do wykonania pokazu tbody: blok; Ale jeśli chodzi o szerokość komórki (zarówno w nagłówku, jak i treści), zależy to od zawartości wewnętrznej. Dlatego dodałem treść o określonej szerokości w każdej komórce, zarówno w thead, jak i minimalnym pierwszym wierszu w tbody (pozostałe wiersze odpowiednio się dostosowują)
źródło