Saya mencoba membuat tabel dengan header tetap dan konten yang dapat digulir menggunakan tabel bootstrap 3. Sayangnya solusi yang saya temukan tidak bekerja dengan bootstrap atau mengacaukan gaya.
Di sini ada tabel bootstrap sederhana, tetapi untuk beberapa alasan bagi saya tidak diketahui ketinggian tbody tidak 10px.
height: 10px !important; overflow: scroll;
Contoh:
<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
sumber
sumber
Jawaban:
Fixed table head - Hanya CSS
Cukup elemen
position: sticky; top: 0;
Andath
. (Chrome, FF, Edge)Memperbaiki masalah perbatasan TH
Karena
border
tidak dapat dicat dengan benar padaTH
elemen yang diterjemahkan , untuk membuat ulang dan membuat "batas" menggunakanbox-shadow
properti:Tampilkan cuplikan kode
Fixed table head - menggunakan JS. (YAITU)
Anda dapat menggunakan sedikit JS dan menerjemahkan
th
elemen - elemenContoh jQuery
Atau ES6 polos jika Anda mau (tidak perlu jQuery):
sumber
Kemungkinan Anda akan mendapatkan beberapa tabel pada satu halaman, oleh karena itu Anda memerlukan kelas CSS. Silakan temukan solusi @ giulio yang dimodifikasi untuk itu.
Cukup nyatakan dalam tabel:
CSS
Ketahuilah bahwa implementasi saat ini hanya cocok untuk lima kolom. Jika Anda membutuhkan angka yang berbeda, ubah parameter lebar dari 20% menjadi * 100% / number_of_columns *.
sumber
.header-fixed > thead > tr > th{white-space: nowrap;}
juga. Jika tajuk mulai membungkusnya akan mengacaukan segalanyascrollbar-width: none;
ke tbody untuk alasan estetikaBerikut ini solusinya:
Tautan ke jsfiddle
sumber
Memperbarui
Untuk pustaka yang lebih baru dan masih dipertahankan, cobalah jquery.floatThead (seperti yang disebutkan oleh Bob Jordan dalam komentar) sebagai gantinya.
Jawaban Lama
Ini adalah jawaban yang sangat lama, perpustakaan yang disebutkan di bawah tidak lagi dipelihara.
Saya menggunakan StickyTableHeaders di GitHub dan itu berfungsi seperti pesona!
Saya harus menambahkan css ini untuk membuat header tidak transparan.
sumber
.tableFloatingHeaderOriginal { //css }
.Tidak perlu membungkusnya dalam div ...
CSS :
Bootply : http://www.bootply.com/AgI8LpDugl
sumber
position: absolute
ontbody
membantu !! Terima kasih !!Lebih mudah dengan css
sumber
table-layout:fixed
dengan menambahkan kelas CSS dengan JavaScriptTerlambat ke pesta (Kisah hidupku), tetapi karena ini adalah hasil pertama di google, dan tidak ada yang membuatku bekerja, inilah kodeku
sumber
th:nth-child(2), td:nth-child(2)
setara dengantr > :nth-child(2)
Di mata saya, salah satu plugin terbaik untuk jQuery adalah DataTables .
Ini juga memiliki ekstensi untuk header tetap , dan sangat mudah diimplementasikan.
Diambil dari situs mereka:
HTML:
JavaScript:
Tetapi yang paling sederhana yang bisa Anda miliki untuk hanya membuat scrollable
<tbody>
adalah:sumber
Posisi tambahan terbaru: 'lengket' akan menjadi solusi paling sederhana di sini
sumber
Anda tidak perlu js. Penting untuk mengatur ketinggian tabel di [ vh ]
sumber
Saya mengalami banyak kesulitan untuk mendapatkan perpustakaan stickytableheaders bekerja. Melakukan pencarian sedikit lebih banyak, saya menemukan floatThead adalah alternatif yang dikelola secara aktif dengan pembaruan terkini dan dokumentasi yang lebih baik.
sumber
Anda harus mencoba dengan "display: block;" untuk semua orang, karena sekarang itu inline-blok dan untuk mengatur ketinggian, elemen harus "blok"
sumber
Pertama tambahkan beberapa markup untuk tabel bootstrap. Di sini saya membuat tabel bergaris tetapi juga telah menambahkan kelas tabel kustom
.table-scroll
yang menambahkan bilah gulir vertikal ke tabel dan membuat tajuk tabel tetap sambil menggulir ke bawah.css
sumber
Saya menggunakan plugin floatThead jQuery ( https://mkoryak.github.io/floatThead/#intro )
docs mengatakan itu bekerja dengan tabel Bootstrap 3 dan saya bisa mengatakan itu juga bekerja dengan tabel Bootstrap 4 dengan atau tanpa penolong responsif tabel.
Menggunakan plugin ini sesederhana ini:
HTML (marka tabel vanila bootstrap)
Inisialisasi Plugin:
Penafian penuh: Saya tidak terkait dengan plugin dengan cara apa pun. Saya kebetulan menemukannya setelah berjam-jam mencoba banyak solusi lain yang diposting di sini dan di tempat lain.
sumber
Untuk apa pun nilainya sekarang: Saya memposting solusi untuk scroll Tabel saudara-thread dengan HTML dan CSS yang
visibility
, bukandisplay
) header dari tabel bawah dan buat tabel bawah dapat digulirkan dengan divSolusinya agnostik untuk semua gaya / kerangka kerja yang digunakan - jadi mungkin itu berguna di sini juga ...
Deskripsi panjang ada di dalam gulir Tabel dengan HTML dan CSS / kode ini juga ada dalam pena ini: https://codepen.io/sebredhh/pen/QmJvKy
sumber
Untuk tabel yang tingginya penuh (halaman menggulir, bukan tabel)
Catatan: Saya memindahkan keseluruhan
<thead>...</thead>
karena dalam kasus saya, saya memiliki dua baris (Judul dan filter)Dengan JS (jQuery)
CSS (Hanya untuk penataan)
sumber
Sekarang bahwa "semua" browser mendukung ES6, saya telah memasukkan berbagai saran di atas ke dalam kelas JavaScript yang mengambil tabel sebagai argumen dan membuat tubuh dapat digulir. Ini memungkinkan mesin tata letak browser menentukan lebar tajuk dan sel tubuh, dan kemudian membuat lebar kolom cocok satu sama lain.
Ketinggian tabel dapat diatur secara eksplisit, atau dibuat untuk mengisi bagian yang tersisa dari jendela browser, dan memberikan panggilan balik untuk acara seperti mengubah ukuran viewport dan / atau
details
elemen membuka atau menutup.Dukungan tajuk multi-baris tersedia, dan sangat efektif jika tabel menggunakan atribut id / header untuk aksesibilitas seperti yang ditentukan dalam Pedoman WCAC , yang tidak terlalu berat seperti yang terlihat.
Kode tidak bergantung pada pustaka mana pun, tetapi bermain dengan baik jika mereka digunakan. (Diuji pada halaman yang menggunakan JQuery).
Kode dan penggunaan sampel tersedia di Github .
sumber
Anda dapat menempatkan dua div di mana div pertama (Header) akan memiliki bilah gulir transparan dan div kedua akan memiliki data dengan bilah gulir yang terlihat / otomatis. Sampel memiliki snipet kode sudut untuk perulangan melalui data.
Kode di bawah ini berfungsi untuk saya -
Gaya tambahan untuk menyembunyikan bilah gulir tajuk -
sumber
Inilah pena copen saya tentang cara membuat tajuk tabel tetap dengan baris dan kolom yang dapat digulir. Kolom juga telah diperbaiki lebar, http://codepen.io/abhilashn/pen/GraJyp
sumber
Solusi Bersih (Hanya CSS)
sumber
Beberapa dukungan tabel yang dapat digulir dalam satu jendela.
CSS murni & Tidak diperbaiki atau lengket.
Saya mencari header tabel tetap dengan auto "td" dan "th" lebar selama bertahun-tahun. Akhirnya saya membuat kode sesuatu, itu bekerja dengan baik untuk saya tetapi saya tidak yakin apakah itu bekerja dengan baik untuk semua orang.
Masalah 1: Kami tidak dapat mengatur tinggi tabel atau badan sementara ada banyak "tr" itu karena properti tabel default.
Solusi: Tetapkan tabel properti tampilan.
Masalah 2: Ketika kita mengatur properti tampilan, lebar elemen "td" tidak boleh sama dengan lebar elemen "th". Dan sulit untuk mengisi elemen dengan benar dalam tabel lebar penuh seperti 100%.
Solusi: CSS "flex" adalah solusi yang sangat baik untuk pengaturan lebar dan isi, jadi kami akan membangun elemen elemen dan elemen dengan CSS "flex".
jsfiddle
sumber
sumber
Menggunakan tautan ini, stackoverflow.com/a/17380697/1725764 , oleh Hashem Qolami di komentar posting asli dan menggunakan tampilan: inline-blok alih-alih mengapung. Memperbaiki batas jika tabel memiliki kelas 'tabel-batas' juga.
Kemudian cukup tambahkan lebar td dan th
sumber
Saya membuat beberapa solusi CSS hanya bekerja dengan menggunakan
position: sticky
. Seharusnya berfungsi di peramban hijau. Cobalah untuk mengubah ukuran browser. Masih memiliki beberapa masalah tata letak di FF, akan memperbaikinya nanti, tapi setidaknya header tabel menangani pengguliran vertikal dan horizontal. Contoh Codepensumber
HTML
CSS
sumber
Cara mudah tanpa lebar tetap:
Sumber
Sekarang, di onLoad, untuk menyesuaikan lebar th, cukup tambahkan skrip jquery ini:
sumber
letakkan tabel di dalam div seperti ini untuk membuat tabel yang dapat digulir secara vertikal. ubah
overflow-y
untukoverflow-x
membuat tabel dapat digulir secara horizontal. hanyaoverflow
untuk membuat tabel dapat digulir baik horisontal maupun vertikal.sumber
sumber