Saya punya pertanyaan tentang cara mendapatkan ketinggian div. Saya sadar .height()
dan innerHeight()
, tetapi tidak ada yang melakukan pekerjaan untuk saya dalam kasus ini. Masalahnya adalah bahwa dalam kasus ini saya memiliki div yang lebar overflown melimpah: gulir dan div memiliki ketinggian tetap.
Jika saya menggunakan .height()
atau innerHeight()
, keduanya memberi saya ketinggian area yang terlihat, tetapi jika saya ingin kelebihan muatan diperhitungkan, bagaimana cara saya melanjutkan?
.scrollHeight
fungsi DOM tidak akan berfungsi di IE <8.0 ( developer.mozilla.org/en/DOM/element.scrollHeight )scrollHeight
kadang-kadang juga mengembalikan nol ketika disembunyikan (atau orang tuanya disembunyikan), mengganggu.overflow: hidden
: /document.getElementById('your_div').scrollHeight
Untuk informasi lebih lanjut tentang
.scrollHeight
properti, rujuk ke dokumen :sumber
Kemungkinan lain akan menempatkan html di non overflow: elemen tersembunyi ditempatkan 'keluar' dari layar, seperti posisi absolut atas dan dibiarkan kurang dari 5000px, lalu baca tinggi elemen ini. Itu jelek, tapi bekerja dengan baik.
sumber
Saya baru saja memasak solusi lain untuk ini, di mana tidak perlu lagi menggunakan nilai -much to high-max-height. Dibutuhkan beberapa baris kode javascript untuk menghitung ketinggian bagian dalam DIV yang diciutkan tetapi setelah itu, itu semua CSS.
1) Mengambil dan mengatur ketinggian
Ambil ketinggian bagian dalam elemen yang runtuh (menggunakan
scrollHeight
). Elemen saya memiliki kelas.section__accordeon__content
dan saya benar-benar menjalankan ini dalam satuforEach()
lingkaran untuk mengatur ketinggian untuk semua panel, tetapi Anda mendapatkan ide.2) Gunakan variabel CSS untuk memperluas item yang aktif
Selanjutnya, gunakan variabel CSS untuk mengatur
max-height
nilai ketika item memiliki.active
kelas.Contoh terakhir
Jadi contoh lengkapnya seperti ini: loop pertama melalui semua panel accordeon dan menyimpan
scrollHeight
nilai - nilai mereka sebagai variabel CSS. Selanjutnya gunakan variabel CSS sebagaimax-height
nilai pada elemen aktif / diperluas / terbuka elemen.Javascript:
CSS:
Dan begitulah. Animasi max-height adaptif yang hanya menggunakan CSS dan beberapa baris kode JavaScript (tidak diperlukan jQuery).
Semoga ini bisa membantu seseorang di masa depan (atau masa depan saya sendiri untuk referensi).
sumber
Bagi mereka yang tidak meluap tetapi bersembunyi dengan margin negatif:
(jelek tapi hanya satu yang bekerja sejauh ini)
sumber
Solusi sederhana lain (tidak terlalu elegan, tetapi tidak terlalu jelek juga) adalah menempatkan batin
div / span
kemudian mendapatkan tinggi badannya ($(this).find('span).height()
).Berikut adalah contoh penggunaan strategi ini:
(Contoh khusus ini menggunakan trik ini untuk menghidupkan tinggi maks dan menghindari penundaan animasi saat runtuh (saat menggunakan angka tinggi untuk properti maks-tinggi).
sumber