Próbuję utworzyć tabelę ze stałym nagłówkiem i przewijalną zawartością za pomocą tabeli bootstrap 3. Niestety znalezione przeze mnie rozwiązania nie działają z bootstrapem i nie psują stylu.
Oto prosta tabela ładowania początkowego, ale z jakiegoś powodu dla mnie nieznanego wysokość ciała nie wynosi 10 pikseli.
height: 10px !important; overflow: scroll;
Przykład:
<link rel="stylesheet" type="text/css" href="//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css">
<table class="table table-striped">
<thead>
<tr>
<th>Make</th>
<th>Model</th>
<th>Color</th>
<th>Year</th>
</tr>
</thead>
<tbody style="height: 10px !important; overflow: scroll; ">
<tr>
<td class="filterable-cell">111 Ford</td>
<td class="filterable-cell">Escort</td>
<td class="filterable-cell">Blue</td>
<td class="filterable-cell">2000</td>
</tr>
<tr>
<td class="filterable-cell">Ford</td>
<td class="filterable-cell">Escort</td>
<td class="filterable-cell">Blue</td>
<td class="filterable-cell">2000</td>
</tr>
<tr>
<td class="filterable-cell">Ford</td>
<td class="filterable-cell">Escort</td>
<td class="filterable-cell">Blue</td>
<td class="filterable-cell">2000</td>
</tr>
<tr>
<td class="filterable-cell">Ford</td>
<td class="filterable-cell">Escort</td>
<td class="filterable-cell">Blue</td>
<td class="filterable-cell">2000</td>
</tr>
</tbody>
</table>
html
css
twitter-bootstrap
html-table
Giulio
źródło
źródło
Odpowiedzi:
Naprawiono głowicę stołu - tylko CSS
Po prostu
position: sticky; top: 0;
twojeth
elementy. (Chrome, FF, Edge)Naprawiono problem z granicami TH
Ponieważ
border
nie można go poprawnie pomalować na przetłumaczonymTH
elemencie, aby odtworzyć i wyrenderować „obramowania”, użyjbox-shadow
właściwości:Pokaż fragment kodu
Naprawiono głowicę stołu - używając JS. (TO ZNACZY)
Można użyć trochę JS i translateY z
th
elementamiPrzykład jQuery
Lub zwykły ES6, jeśli wolisz (nie wymaga jQuery):
źródło
Prawdopodobnie dostaniesz wiele tabel na jednej stronie, dlatego potrzebujesz klas CSS. Znajdź zmodyfikowane rozwiązanie @ giulio.
Po prostu zadeklaruj to w tabeli:
CSS
Należy pamiętać, że bieżąca implementacja pasuje tylko do pięciu kolumn. Jeśli potrzebujesz innej liczby, zmień parametr szerokości z 20% na * 100% / liczba_kolumn *.
źródło
.header-fixed > thead > tr > th{white-space: nowrap;}
. Jeśli nagłówki zaczną się owijać, wszystko toscrollbar-width: none;
na punkcie tego problemu: używam materializacji, a ta odpowiedź bardzo mi pomogła, dodatkowo dodałem do siebie ze względów estetycznychOto działające rozwiązanie:
Link do jsfiddle
źródło
Aktualizacja
W przypadku nowszej i wciąż utrzymywanej biblioteki wypróbuj jquery.floatThead (jak wspomniano w komentarzu Boba Jordana) .
Stara odpowiedź
To bardzo stara odpowiedź, wspomniana poniżej biblioteka nie jest już utrzymywana.
Korzystam z StickyTableHeaders na GitHub i działa jak urok!
Musiałem jednak dodać ten css, aby nagłówek nie był przezroczysty.
źródło
.tableFloatingHeaderOriginal { //css }
.Nie potrzebuję zawijać go w div ...
CSS :
Bootply : http://www.bootply.com/AgI8LpDugl
źródło
position: absolute
Natbody
pomogło !! Dzięki !!Z css jest łatwiej
źródło
table-layout:fixed
, dodając klasę CSS z JavaScriptPóźno na imprezę (Story of my life), ale ponieważ jest to pierwszy wynik w google i żadne z powyższych nie skłoniło mnie do działania, oto mój kod
źródło
th:nth-child(2), td:nth-child(2)
odpowiedniktr > :nth-child(2)
Moim zdaniem jedną z najlepszych wtyczek do jQuery są DataTables .
Ma również rozszerzenie do stałego nagłówka i jest bardzo łatwe do wdrożenia.
Pobrane z ich strony:
HTML:
JavaScript:
Ale najprostszym sposobem na przewijanie
<tbody>
jest:źródło
Ostatnia pozycja dodana: „lepka” byłaby tutaj najprostszym rozwiązaniem
źródło
Nie potrzebujesz js. Ważne jest ustawienie wysokości stołu w [ vh ]
źródło
Miałem wiele problemów z uruchomieniem biblioteki stickytableheaders. Robiąc trochę więcej wyszukiwania, odkryłem, że floatThead jest aktywnie utrzymywaną alternatywą z najnowszymi aktualizacjami i lepszą dokumentacją.
źródło
Powinieneś spróbować z „display: block;” tbody, ponieważ teraz jest to blok wbudowany i aby ustawić wysokość, element powinien być „blok”
źródło
Najpierw dodaj znaczniki do tabeli ładowania początkowego. Tutaj utworzyłem tabelę rozłożoną, ale dodałem także niestandardową klasę tabeli,
.table-scroll
która dodaje pionowy pasek przewijania do tabeli i naprawia nagłówek tabeli podczas przewijania w dół.css
źródło
Użyłem wtyczki floatThead jQuery ( https://mkoryak.github.io/floatThead/#intro )
Dokumenty mówią, że działa z tabelami Bootstrap 3 i mogę powiedzieć, że działa również z tabelami Bootstrap 4 z lub bez pomocnika reagującego na tabelę.
Korzystanie z wtyczki jest tak proste:
HTML (waniliowy znacznik tabeli ładującej)
Inicjalizacja wtyczki:
Pełna nota prawna: Nie jestem w żaden sposób związany z wtyczką. Zdarzyło mi się to po godzinach wypróbowania wielu innych rozwiązań opublikowanych tutaj i gdzie indziej.
źródło
Niezależnie od tego, co jest teraz warte: dodałem rozwiązanie do siostrzanego wątku Przewiń tabelę z HTML i CSS, które
visibility
, niedisplay
) nagłówek dolnej tabeli i ustaw przewijanie dolnej tabeli w / w divRozwiązanie jest agnostyczne dla każdego używanego stylu / frameworka - więc może i tutaj jest przydatne ...
Długi opis znajduje się w przewijaniu tabeli z HTML i CSS / kod znajduje się również w tym piórze: https://codepen.io/sebredhh/pen/QmJvKy
źródło
W przypadku tabel o pełnej wysokości (strona przewija się, a nie tabela)
Uwaga: przesuwam całość
<thead>...</thead>
moim przypadku miałem dwa wiersze (tytuł i filtry)Z JS (jQuery)
CSS (tylko do stylizacji)
źródło
Teraz, gdy „wszystkie” przeglądarki obsługują ES6, włączyłem różne powyższe sugestie do klasy JavaScript, która bierze tabelę jako argument i sprawia, że ciało można przewijać. Pozwala silnikowi układu przeglądarki określić szerokość nagłówka i treści komórki, a następnie dopasowuje szerokości kolumn do siebie.
Wysokość tabeli można ustawić jawnie lub wykonać w celu wypełnienia pozostałej części okna przeglądarki i zapewnia wywołania zwrotne dla zdarzeń, takich jak zmiana rozmiaru rzutni i / lub
details
otwieranie lub zamykanie elementów.Obsługa wielu wierszy nagłówków jest dostępna i jest szczególnie skuteczna, jeśli tabela używa atrybutów id / headers dla ułatwienia dostępu zgodnie z wytycznymi WCAC , co nie jest tak uciążliwym wymaganiem, jak mogłoby się wydawać.
Kod nie zależy od żadnych bibliotek, ale dobrze się z nimi gra, jeśli są używane. (Testowane na stronach korzystających z JQuery).
Kod i przykładowe użycie są dostępne na Github .
źródło
Możesz umieścić dwa div, gdzie 1. div (nagłówek) będzie miał przezroczysty pasek przewijania, a 2. div będzie miał dane z widocznym / automatycznym paskiem przewijania. Próbka zawiera fragment kodu kątowego do zapętlania danych.
Poniższy kod działał dla mnie -
Dodatkowy styl do ukrywania paska przewijania nagłówka -
źródło
Oto mój copen pen, w jaki sposób zrobić stały nagłówek tabeli z przewijanymi wierszami i kolumnami. Kolumny mają również ustaloną szerokość, http://codepen.io/abhilashn/pen/GraJyp
źródło
Rozwiązanie czyszczące (tylko CSS)
źródło
Obsługa wielu przewijanych tabel w jednym oknie.
Czysty CSS i nie jest stały ani lepki.
Od lat szukam stałego nagłówka tabeli z automatycznymi szerokościami „td” i „th”. W końcu coś napisałem, to działa dobrze dla mnie, ale nie jestem pewien, czy działa dobrze dla wszystkich.
Problem 1: Nie możemy ustawić wysokości stołu lub tułowia, gdy mamy tony „tr”, to z powodu domyślnych właściwości stołu.
Rozwiązanie: Ustaw tabelę jako właściwość wyświetlania.
Problem 2: Gdy ustawimy właściwość display, szerokość elementów „td” nie może być równa szerokości elementów „th”. I trudno jest poprawnie wypełnić elementy w tabeli pełnej szerokości, np. 100%.
Rozwiązanie: CSS „flex” jest bardzo dobrym rozwiązaniem dla konfiguracji szerokości i wypełnienia, więc będziemy budować nasze elementy ciała i thead z CSS „flex”.
jsfiddle
źródło
źródło
Użyłem tego linku, stackoverflow.com/a/17380697/1725764 , autorstwa Hashem Qolami przy komentarzach oryginalnych postów i użyłem display: inline-blocks zamiast float. Naprawia granice, jeśli tabela ma również klasę „graniczącą z tabelą”.
Następnie po prostu dodaj szerokość td i th
źródło
Zrobiłem jakieś działające rozwiązanie tylko CSS za pomocą
position: sticky
. Powinien działać na wiecznie zielonych przeglądarkach. Spróbuj zmienić rozmiar przeglądarki. Wciąż mam problem z układem w FF, naprawię go później, ale przynajmniej nagłówki tabeli obsługują przewijanie w pionie i poziomie. Przykład Codepenźródło
HTML
CSS
źródło
Prosty sposób bez stałej szerokości:
Źródło
Teraz, w onLoad, aby dopasować szerokość, po prostu dodaj ten skrypt jquery:
źródło
umieść stół w div w ten sposób, aby przewijać stół pionowo. zmienić
overflow-y
, abyoverflow-x
zrobić stół przewijalnych poziomo. tylko pooverflow
to, aby przewijać stół zarówno w poziomie, jak i w pionie.źródło
źródło