Saya memiliki div dengan ketinggian tetap dan overflow:hidden;
Saya ingin memeriksa dengan jQuery jika div memiliki elemen yang meluap melewati ketinggian tetap div tersebut. Bagaimana saya bisa melakukan ini?
javascript
jquery
html
Justin Meltzer
sumber
sumber
Jawaban:
Anda sebenarnya tidak memerlukan jQuery untuk memeriksa apakah ada overflow atau tidak. Menggunakan
element.offsetHeight
,element.offsetWidth
,element.scrollHeight
danelement.scrollWidth
Anda dapat menentukan apakah elemen Anda memiliki konten yang lebih besar dari ukuran itu:Lihat contoh dalam aksi: Fiddle
Tetapi jika Anda ingin tahu elemen apa di dalam elemen Anda yang terlihat atau tidak, Anda perlu melakukan lebih banyak perhitungan. Ada tiga negara bagian untuk elemen anak dalam hal visibilitas:
Jika Anda ingin menghitung item semi-terlihat itu adalah skrip yang Anda butuhkan:
Dan jika Anda tidak ingin menghitung semi-terlihat, Anda dapat menghitung dengan sedikit perbedaan.
sumber
<p>
adalah elemen level blok dan membutuhkan lebar 100%. Jika Anda ingin mencoba ini dengan jumlah teks di dalam p buat sajap{display:inline}
. Dengan cara ini teks di dalam menentukan lebarp
.Saya memiliki pertanyaan yang sama dengan OP, dan tidak ada jawaban yang sesuai dengan kebutuhan saya. Saya membutuhkan kondisi sederhana, untuk kebutuhan sederhana.
Inilah jawaban saya:
Juga, Anda dapat mengubah
scrollWidth
denganscrollHeight
jika Anda perlu untuk menguji kasus baik.sumber
Jadi saya menggunakan perpustakaan jquery meluap: https://github.com/kevinmarx/overflowing
Setelah menginstal perpustakaan, jika Anda ingin menetapkan kelas
overflowing
untuk semua elemen meluap, Anda cukup menjalankan:Ini kemudian akan memberikan kelas
overflowing
, seperti pada<div class="targetElement overflowing">
semua elemen yang meluap. Anda kemudian dapat menambahkan ini ke beberapa pengendali acara (klik, tetikus) atau fungsi lain yang akan menjalankan kode di atas sehingga pembaruan secara dinamis.sumber
Sebagian didasarkan pada jawaban Mohsen (kondisi pertama yang ditambahkan mencakup kasus di mana anak disembunyikan di hadapan orang tua):
Maka lakukan saja:
sumber
Salah satu metode adalah memeriksa scrollTop terhadap dirinya sendiri. Berikan konten nilai gulir lebih besar dari ukurannya dan kemudian periksa untuk melihat apakah scrollTopnya adalah 0 atau tidak (jika bukan 0, ia telah meluap.)
http://jsfiddle.net/ukvBf/
sumber
Dalam bahasa Inggris biasa: Dapatkan elemen induk. Periksa ketinggiannya, dan simpan nilainya. Kemudian putar semua elemen anak dan periksa ketinggian masing-masing.
Ini kotor, tetapi Anda mungkin mendapatkan ide dasarnya: http://jsfiddle.net/VgDgz/
sumber
Ini solusi jQuery murni, tapi agak berantakan:
sumber
Ini adalah solusi jQuery yang bekerja untuk saya.
offsetWidth
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
Saya memperbaikinya dengan menambahkan div lain di salah satu yang meluap. Kemudian Anda membandingkan ketinggian 2 div.
dan js
Ini terlihat lebih mudah ...
sumber