Chciałbym mieć tabelę na mojej stronie. Problem w tym, że ta tabela będzie miała około 400 linii. Jak mogę ograniczyć wysokość tabeli i zastosować do niej pasek przewijania? To jest mój kod:
<div class="span3">
<h2>Achievements left</h2>
<table class="table table-striped">
<thead>
<tr>
<th>#</th>
<th>Name</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Something</td>
</tr>
<tr>
<td>2</td>
<td>Something</td>
</tr>
<tr>
<td>3</td>
<td>Something</td>
</tr>
<tr>
<td>4</td>
<td>Something</td>
</tr>
<tr>
<td>5</td>
<td>Something</td>
</tr>
<tr>
<td>6</td>
<td>Something</td>
</tr>
</tbody>
</table>
<p><a class="btn" href="#">View details »</a></p>
</div>
Próbowałem zastosować maksymalną wysokość i stałą wysokość do stołu, ale to nie działa.
twitter-bootstrap
pangi
źródło
źródło
overflow
tylko do głównej części stołu, ale gdzie<thead>
części są zawsze wyświetlane?Będziesz chciał umieścić go we własnym div lub nadać temu span3 własny identyfikator, aby nie wpływać na cały układ.
Oto skrzypce: http://jsfiddle.net/zm6rf/
źródło
.span3
wpłynie na wszystkiespan3
elementy w całej witrynie opartej na Bootstrapie.Nie trzeba zawijać go w div ...
CSS :
Bootply : http://www.bootply.com/AgI8LpDugl
źródło
td
elemencie różnią się wielkością. bootply.com/OsvzINuTUAMiałem ten sam problem i zastosowałem kombinację powyższych rozwiązań (i dodałem własny zwrot akcji). Zauważ, że musiałem określić szerokości kolumn, aby zachować spójność między nagłówkiem a treścią.
W moim rozwiązaniu nagłówek i stopka pozostają stałe podczas przewijania treści.
Następnie zastosowałem następujący CSS:
Mam nadzieję, że to pomoże komuś innemu.
źródło
Niedawno musiałem to zrobić z bootstrapem i angularjs, stworzyłem dyrektywę angularjs, która rozwiązuje problem, możesz zobaczyć działający przykład i szczegóły w tym poście na blogu .
Używasz go po prostu dodając atrybut stałego nagłówka do tagu tabeli:
Jeśli nie używasz angularjs, możesz zmodyfikować javascript dyrektywy i użyć go bezpośrednio.
źródło
CSS
HTML
źródło
.table-class-name { height: 100%; }
.To może nie być rozwiązaniem w przypadku dużej liczby wierszy. Po prostu używam sztuczki z tabelą powielania, aby zrobić to dla małej tabeli z liczbą wierszy, podczas gdy może ona zachować szerokość kolumny flex, możesz wypróbować to skrzypce .
(Kolumna o stałej szerokości to metoda, której używam w przypadku dużej tabeli z liczbą wierszy, która wymaga tylko powielenia wiersza nagłówka)
Przykładowy kod:
źródło
Umieść tabelę w elemencie div i przypisz mu klasę
pre-scrollable
.źródło
Niedawno miałem podobny problem i ostatecznie naprawiłem go przy użyciu mieszanki różnych rozwiązań.
Pierwszym i najprostszym było użycie dwóch tabel, jednej dla nagłówków i jednej dla ciała. To działa, ale nagłówki i kolumny z treścią nie są wyrównane. A ponieważ chciałem użyć rozmiaru automatycznego, który jest dostępny w tabelach ładowania początkowego na Twitterze, utworzyłem funkcję JavaScript, która zmienia nagłówki, gdy: renderowane jest ciało; okna są zmieniane; dane w kolumnie ulegną zmianie itp.
Oto część kodu, którego użyłem:
Nagłówki i treść są podzielone na dwie oddzielne tabele. Jeden z nich znajduje się wewnątrz DIV z niezbędnym stylem do generowania pionowych pasków przewijania. Oto CSS, którego użyłem:
Skomentowałem tutaj wysokość, ponieważ chciałem, aby tabela sięgała do dołu strony, niezależnie od wysokości strony.
Atrybuty sortowania danych, których użyłem w nagłówkach, są również używane w każdym td. W ten sposób mogłem uzyskać szerokość i wypełnienie każdego td oraz szerokość rzędu. Używając atrybutów sortowania danych, ustawiłem za pomocą CSS odpowiednio dopełnienie i szerokość każdego nagłówka oraz wiersza nagłówka, który jest zawsze większy, ponieważ nie ma paska przewijania. Oto funkcja używająca coffeescript:
Tutaj zakładam, że masz tablicę nagłówków o nazwie @headers.
Nie jest ładna, ale działa. Mam nadzieję, że to komuś pomoże.
źródło
Wszystkie powyższe rozwiązania powodują również przewijanie nagłówka tabeli ... Jeśli chcesz przewijać tylko do treści, zastosuj to:
źródło
Żadna z tych odpowiedzi nie była dla mnie zadowalająca. Albo nie naprawili wiersza nagłówków tabeli, albo do działania wymagali stałych szerokości kolumn, a nawet wtedy mieli tendencję do nieprawidłowego wyrównania wierszy nagłówka i treści w różnych przeglądarkach.
Polecam ugryźć kulę i użyć odpowiedniej kontroli siatki, takiej jak jsGrid lub mój ulubiony, SlickGrid . To oczywiście wprowadza zależność, ale jeśli chcesz, aby twoje tabele zachowywały się jak prawdziwe siatki z obsługą wielu przeglądarek, zaoszczędzi ci to wyrywania włosów. Daje również opcję sortowania i zmiany rozmiaru kolumn oraz wielu innych funkcji, jeśli chcesz.
źródło
Re sugestia Jonathana Wooda. Nie mam opcji zawijania tabel nowym elementem div, ponieważ używam CMS. Oto co zrobiłem za pomocą JQuery:
Powoduje to zawinięcie elementów tabeli nowym elementem div z klasą „table-overflow”.
Następnie możesz po prostu dodać następującą definicję w swoim pliku css:
źródło
umieść tabelę wewnątrz elementu div, aby przewijać tabelę w pionie. zmień
overflow-y
na,overflow-x
aby umożliwić przewijanie tabeli w poziomie. tylko pooverflow
to, aby stół był przewijany zarówno w poziomie, jak iw pionie.źródło
Pomyślałem, że opublikuję tutaj, ponieważ nie mogłem zmusić żadnego z powyższych do pracy z Bootstrap 4. Znalazłem to online i działało idealnie dla mnie ...
Dołączyłem też działające jsfindle.
https://jsfiddle.net/jgngg28t/
Mam nadzieję, że pomoże to komuś innemu.
źródło