Saya sudah sangat besar table
. Jadi saya memutuskan untuk meletakkan scrollbar horizontal di bagian bawah tabel. Tetapi saya ingin scrollbar ini juga berada di atas meja.
Apa yang saya miliki di template adalah ini:
<div style="overflow:auto; width:100%; height:130%">
<table id="data" style="width:100%">...</table>
</div>
Apakah ini hanya dapat dilakukan dalam HTML dan CSS?
javascript
jquery
html
css
psoares
sumber
sumber
Jawaban:
Untuk mensimulasikan scrollbar horizontal kedua di atas elemen, letakkan "dummy" di
div
atas elemen yang memiliki scrolling horizontal, cukup tinggi untuk scrollbar. Kemudian lampirkan penangan acara "gulir" untuk elemen dummy dan elemen nyata, untuk membuat elemen lainnya selaras ketika salah satu scrollbar dipindahkan. Elemen dummy akan terlihat seperti scrollbar horizontal kedua di atas elemen sebenarnya.Untuk contoh langsung , lihat biola ini
Ini kodenya :
HTML:
CSS:
JS:
sumber
Coba gunakan
jquery.doubleScroll
plugin :jQuery:
CSS:
HTML:
sumber
Pertama-tama, jawaban yang bagus, @StanleyH. Jika seseorang bertanya-tanya bagaimana membuat wadah gulir ganda dengan lebar dinamis:
css
js
html
demo
http://jsfiddle.net/simo/67xSL/
sumber
$('.div1').width( $('.div1')[0].scrollWidth)
untuk mendapatkan lebar gulir sebenarnya dari konten, berguna saat Anda tidak secara khusus menggunakan tabel seperti wadah. @simo Teman usaha yang luar biasa.Tanpa JQuery (2017)
Karena Anda mungkin tidak memerlukan JQuery, berikut adalah versi Vanilla JS yang berfungsi berdasarkan jawaban @StanleyH:
sumber
Anda dapat menggunakan plugin jQuery yang akan melakukan pekerjaan untuk Anda:
Plugin akan menangani semua logika untuk Anda.
sumber
Jawaban StanleyH sangat bagus, tetapi ia memiliki satu bug yang tidak menguntungkan: mengklik area yang diarsir pada scrollbar tidak lagi melompat ke pilihan yang Anda klik. Sebaliknya, yang Anda dapatkan adalah kenaikan yang sangat kecil dan agak menyebalkan di posisi bilah gulir.
Diuji: 4 versi Firefox (100% terpengaruh), 4 versi Chrome (50% terpengaruh).
Ini jsfiddle saya . Anda dapat menyiasatinya dengan memiliki on / off (true / false) var yang memungkinkan hanya satu onScroll () acara untuk memicu sekaligus:
Masalah Perilaku Dengan Jawaban yang Diterima:
Perilaku yang Sebenarnya Diinginkan:
Jadi, mengapa ini terjadi?Jika Anda menjalankan kode, Anda akan melihat bahwa wrapper1 memanggil scrollLeft wrapper2, dan wrapper2 memanggil scrollLeft wrapper1, dan ulangi ini tanpa batas, jadi, kami memiliki masalah loop tak terbatas. Atau, lebih tepatnya: pengguliran terus-menerus dari konflik pengguna dengan panggilan wrapperx tentang pengguliran, terjadi suatu peristiwa konflik, dan hasil akhirnya adalah tidak ada lompatan di scrollbar.
Semoga ini bisa membantu orang lain!
sumber
Menghubungkan penggulung berfungsi, tetapi dengan cara yang tertulis itu membuat perulangan yang membuat pengguliran lambat di sebagian besar peramban jika Anda mengeklik bagian bilah gulir yang lebih ringan dan menahannya (bukan saat menyeret penggulung).
Saya memperbaikinya dengan bendera:
sumber
solusi hanya javascript yang didasarkan pada jawaban @HoldOffHunger dan @bobince
.
sumber
Berdasarkan solusi @StanleyH saya membuat arahan AngularJS , demo di jsFiddle .
Mudah digunakan:
Untuk pengembang AngularJS
sumber
Sejauh yang saya tahu ini tidak mungkin dengan HTML dan CSS.
sumber
Dalam vanilla Javascript / Angular Anda dapat melakukan ini seperti ini:
HTML:
CSS:
sumber
Memperluas jawaban StanleyH, dan mencoba menemukan persyaratan minimum, berikut ini yang saya terapkan:
JavaScript (dipanggil sekali dari suatu tempat seperti
$(document).ready()
):HTML (perhatikan bahwa lebarnya akan mengubah panjang bilah gulir):
Itu dia.
sumber
untuk semua penggemar angular / asli, menerapkan jawaban @ simo
HTML (tidak ada perubahan)
CSS (tidak ada perubahan, lebar: 90% adalah keinginan saya)
JS (suka
onload
) ataungAfterViewChecked
(semuaas
untukTypeScript
)sumber
Jika Anda menggunakan iscroll.js di browser webkit atau browser seluler, Anda dapat mencoba:
sumber
Arahan AngularJs untuk mencapai ini: Untuk menggunakannya, tambahkan kelas css double-hscroll ke elemen Anda. Anda akan memerlukan jQuery dan AngularJs untuk ini.
sumber
Ini adalah contoh untuk VueJS
index.page
MENGAMBIL CATATAN pada
height: 12px
.. Saya membuatnya 12px sehingga akan diperhatikan pada Pengguna Mac juga. Tapi w / windows, 0.1px cukup baiksumber
Ada masalah dengan arah gulir: rtl. Sepertinya plugin tidak mendukungnya dengan benar. Ini biola: biola
Perhatikan bahwa ia bekerja dengan benar di Chrome, tetapi di semua browser populer lainnya arah bilah gulir atas tetap ada.
sumber