.scrollbox {
overflow: auto;
width: 200px;
max-height: 200px;
margin: 50px auto;
background:
/* Shadow covers */
linear-gradient(white 30%, rgba(255,255,255,0)),
linear-gradient(rgba(255,255,255,0), white 70%) 0 100%,
/* Shadows */
radial-gradient(50% 0, farthest-side, rgba(0,0,0,.2), rgba(0,0,0,0)),
radial-gradient(50% 100%,farthest-side, rgba(0,0,0,.2), rgba(0,0,0,0)) 0 100%;
background:
/* Shadow covers */
linear-gradient(white 30%, rgba(255,255,255,0)),
linear-gradient(rgba(255,255,255,0), white 70%) 0 100%,
/* Shadows */
radial-gradient(farthest-side at 50% 0, rgba(0,0,0,.2), rgba(0,0,0,0)),
radial-gradient(farthest-side at 50% 100%, rgba(0,0,0,.2), rgba(0,0,0,0)) 0 100%;
background-repeat: no-repeat;
background-color: white;
background-size: 100% 40px, 100% 40px, 100% 14px, 100% 14px;
/* Opera doesn't support this in the shorthand */
background-attachment: local, local, scroll, scroll;
}
<div class="scrollbox">
<ul>
<li>Not enough content to scroll</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
</div>
<div class="scrollbox">
<ul>
<li>Ah! Scroll below!</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>The end!</li>
<li>No shadow there.</li>
</ul>
</div>
Elemen dapat dilimpahi secara vertikal, horizontal atau keduanya. Fungsi ini akan mengembalikan Anda nilai boolean jika elemen DOM terlalu banyak:
Tampilkan cuplikan kode
Contoh ES6:
sumber
$("#element").overflown()
):$.fn.overflown=function(){var e=this[0];return e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth;}
element.addEventListener ("overflow", () => log( "overflow" ), false);
Referensi: acara melimpahDibandingkan
element.scrollHeight
denganelement.clientHeight
harus melakukan tugas.Di bawah ini adalah gambar dari MDN menjelaskan Element.scrollHeight dan Element.clientHeight.
sumber
Saya membuat codepen multi bagian yang menunjukkan jawaban di atas (misalnya menggunakan overflow tersembunyi dan tinggi) tetapi juga bagaimana Anda akan memperluas / menciutkan item yang meluap
Contoh 1: https://codepen.io/Kagerjay/pen/rraKLB (Contoh sederhana sebenarnya, tanpa javascript, hanya untuk klip item yang dilimpahi)
Contoh 2: https://codepen.io/Kagerjay/pen/LBErJL (Handler acara tunggal menunjukkan lebih banyak / tidak ditampilkan pada item yang meluap)
Contoh 3: https://codepen.io/Kagerjay/pen/MBYBoJ (Handler multi-event di banyak acara lebih banyak / lebih sedikit menunjukkan pada item-item yang meluap)
Saya telah melampirkan contoh 3 di bawah ini juga , saya menggunakan Jade / Pug sehingga mungkin sedikit lebih baik. Saya sarankan memeriksa codepens yang telah saya buat lebih mudah untuk dipahami.
sumber
Apakah sesuatu seperti ini: http://jsfiddle.net/Skooljester/jWRRA/1/ bekerja? Itu hanya memeriksa ketinggian konten dan membandingkannya dengan ketinggian wadah. Jika lebih besar daripada yang dapat Anda masukkan ke dalam kode untuk menambahkan tombol "Tampilkan lebih banyak".
Perbarui: Menambahkan kode untuk membuat tombol "Tampilkan Selengkapnya" di bagian atas wadah.
sumber
Jika Anda menggunakan jQuery, Anda dapat mencoba trik: buat div luar dengan
overflow: hidden
dan div dalam dengan konten. Kemudian gunakan.height()
fungsi untuk memeriksa apakah ketinggian div dalam lebih besar dari tinggi div luar. Saya tidak yakin ini akan berhasil tetapi cobalah.sumber
gunakan js untuk memeriksa apakah anak
offsetHeight
lebih dari orang tua .. jika ya, buat orang tua meluapscroll/hidden/auto
mana pun yang Anda inginkan dan jugadisplay:block
pada lebih banyak div ..sumber
Anda dapat memeriksa batas relatif terhadap induk offset.
Jika Anda melewatkan elemen ini, elemen akan memberi tahu Anda apakah batasnya sepenuhnya di dalam wadah, dan akan default ke induk offset elemen jika tidak ada wadah eksplisit yang disediakan. Itu menggunakan
sumber
Masalah lain yang harus Anda pertimbangkan adalah tidak tersedianya JS. Pikirkan tentang pesona progresif atau penurunan anggun. Saya akan menyarankan:
sumber
Berikut adalah biola untuk menentukan apakah suatu elemen telah meluap menggunakan div pembungkus dengan luberan: tersembunyi dan tinggi JQuery () untuk mengukur perbedaan antara pembungkus dan div konten dalam.
Sumber: Kerangka & Ekstensi di jsfiddle.net
sumber
Ini adalah solusi jQuery yang bekerja untuk saya.
clientWidth
dll tidak bekerja.Jika ini tidak berhasil, pastikan bahwa induk elemen memiliki lebar yang diinginkan (secara pribadi, saya harus menggunakan
parent().parent())
.position
Relatif terhadap induk. Saya juga menyertakanextra_width
karena elemen saya ("tag") berisi gambar yang membutuhkan waktu sedikit untuk memuat, tetapi selama panggilan fungsi mereka memiliki lebar nol, merusak perhitungan. Untuk menyiasatinya, saya menggunakan kode panggilan berikut:Semoga ini membantu.
sumber
Ini berhasil untuk saya. Terima kasih.
sumber
Alternatif jquery untuk jawabannya adalah menggunakan kunci [0] untuk mengakses elemen mentah seperti ini:
sumber
Saya telah memperpanjang Elemen untuk alasan enkapsulasi. Dari jawaban mikro.
Gunakan seperti ini
sumber