Saya ingin menghidupkan <div>
dari 200px
ke auto
ketinggian. Sepertinya saya tidak bisa membuatnya bekerja. Adakah yang tahu bagaimana caranya?
Berikut kodenya:
$("div:first").click(function(){
$("#first").animate({
height: "auto"
}, 1000 );
});
javascript
jquery
html
css
jquery-animate
Daniel
sumber
sumber
Jawaban:
Simpan ketinggian saat ini:
Pindahkan ketinggian sementara ke otomatis:
Dapatkan ketinggian otomatis:
Beralih kembali ke
curHeight
dan hidupkan keautoHeight
:Dan bersama-sama:
sumber
.animated({height: autoHeight}, 1000, function(){ el.height('auto'); });
opacity: 0; position: absolute;
saat mengukurnya dan menghapus yang sudah selesai.IMO ini adalah solusi terbersih dan termudah:
Penjelasan: DOM sudah tahu dari rendering awal berapa ukuran div yang diperluas ketika diatur ke tinggi otomatis. Properti ini disimpan di simpul DOM sebagai
scrollHeight
. Kita hanya perlu mengambil Elemen DOM dari Elemen jQuery dengan meneleponget(0)
dan kemudian kita dapat mengakses properti.Menambahkan fungsi panggilan balik untuk mengatur ketinggian ke otomatis memungkinkan respons yang lebih besar setelah animasi selesai (credit chris-williams ):
sumber
clientHeight
, yang tampaknya tidak didukung: developer.mozilla.org/en-US/docs/Web/ API / Element.clientHeight$('#first').animate({ height: $('#first').get(0).scrollHeight }, 1000, function() { $(this).height('auto'); });
scrollWidth
animasi lebar.Ini pada dasarnya adalah pendekatan yang sama dengan jawaban oleh Box9 tapi saya membungkusnya dalam plugin jquery bagus yang mengambil argumen yang sama dengan animasi biasa , karena ketika Anda perlu memiliki lebih banyak parameter animasi dan bosan mengulangi kode yang sama berulang-ulang :
sunting: rantai dan bersih sekarang
sumber
Solusi yang lebih baik tidak akan bergantung pada JS untuk mengatur ketinggian elemen Anda. Berikut ini adalah solusi yang menggerakkan elemen ketinggian tetap ke ketinggian penuh ("otomatis"):
https://gist.github.com/2023150
sumber
height
nilai tetap (mis. 122px). Elemen saya berubah ketinggian setelah beberapa saat, jadi saya harus mengganti argumen durasi (400) dengan opsi{duration: 400, complete: function() {$selector.css('height', 'auto');}}
ini berfungsi dan ini lebih simpel daripada solusi sebelumnya:
CSS:
JS:
Catatan: Solusi ini membutuhkan jQuery UI
sumber
.addClass
dan.removeClass
?sumber
Anda selalu dapat membungkus elemen turunan #first dan menyimpan ketinggian tinggi pembungkus sebagai variabel. Ini mungkin bukan jawaban yang paling cantik atau paling efisien, tetapi itu yang berhasil.
Ini biola di mana saya memasukkan reset.
tetapi untuk tujuan Anda, inilah daging & kentang:
sumber
Gunakan slideDown dan slideUp
sumber
Saya berhasil memperbaikinya: D inilah kode.
sumber
Anda dapat membuat jawaban Liquinaut responsif terhadap perubahan ukuran jendela dengan menambahkan panggilan balik yang mengatur ketinggian kembali ke otomatis.
sumber
Pada dasarnya ketinggian otomatis hanya tersedia untuk Anda setelah elemen diberikan. Jika Anda menetapkan ketinggian tetap, atau jika elemen Anda tidak ditampilkan, Anda tidak dapat mengaksesnya tanpa trik.
Untungnya ada beberapa trik yang bisa Anda gunakan.
Kloning elemen, tampilkan di luar tampilan, berikan ketinggian secara otomatis dan Anda dapat mengambilnya dari klon dan menggunakannya nanti untuk elemen utama. Saya menggunakan fungsi ini dan tampaknya berfungsi dengan baik.
PEMAKAIAN:
sumber
Anda selalu dapat melakukan ini:
di sini adalah biola: http://jsfiddle.net/Zuriel/faE9w/2/
sumber
.appendTo("body")
oleh.appendTo(el.parent())
Penyeleksi Anda sepertinya tidak cocok. Apakah elemen Anda memiliki ID 'pertama', atau apakah itu elemen pertama di setiap div?
Solusi yang lebih aman adalah menggunakan 'ini':
sumber
$(this)
di dalam handler klik Anda.animate({height: 'auto'})
tidak memiliki efek apa pun. Setidaknya, tidak dengan jQuery 1.6.4.Coba yang ini ,
sumber
Inilah yang berfungsi dengan BORDER-BOX ...
Hai kawan. Berikut ini adalah plugin jQuery yang saya tulis untuk melakukan hal yang sama, tetapi juga memperhitungkan perbedaan tinggi yang akan terjadi ketika Anda telah
box-sizing
menyetel keborder-box
.Saya juga menyertakan plugin "yShrinkOut" yang menyembunyikan elemen dengan menyusutkannya di sepanjang sumbu y.
Parameter apa pun yang saya gunakan dapat dihilangkan atau diatur ke nol untuk menerima nilai default. Parameter yang saya gunakan:
sumber
Toggle slide ( jawaban Box9 diperluas)
sumber
Saya memposting jawaban ini meskipun utas ini sudah lama. Saya tidak bisa mendapatkan jawaban yang diterima untuk bekerja untuk saya. Yang ini berfungsi dengan baik dan sangat sederhana.
Saya memuat tinggi setiap div yang saya inginkan ke dalam data
Lalu saya hanya menggunakannya saat menghidupkan klik.
Saya menggunakan transisi CSS, jadi saya tidak menggunakan jQuery animate, tetapi Anda bisa melakukan animate sama saja.
sumber
Anda dapat menyimpannya dalam atribut data.
sumber
Saya membutuhkan fungsionalitas ini untuk banyak membaca lebih banyak area pada satu halaman mengimplementasikan ini ke dalam shortcode Wordpress saya mengalami masalah yang sama.
Desain secara teknis semua bacaan lebih lanjut pada halaman memiliki ketinggian tetap. Dan saya ingin dapat mengembangkannya secara terpisah ke ketinggian otomatis dengan toggle. Klik pertama: 'perluas rentang teks penuh', klik kedua: 'runtuh kembali ke ketinggian default 70px'
Html
CSS
Jadi di atas ini terlihat sangat sederhana
data-base
atribut yang saya butuhkan untuk mengatur ketinggian tetap yang dibutuhkan. Thedata-height
atribut Aku digunakan untuk menyimpan aktual (dinamis) tinggi dari elemen.Bagian jQuery
Pertama saya telah menggunakan fungsi clickToggle untuk klik pertama dan kedua saya. Fungsi kedua lebih penting:
setAttr_height()
Semua.read-more
elemen memiliki ketinggian aktual yang ditetapkan pada pemuatan halaman dalambase-height
atribut. Setelah itu ketinggian dasar diatur melalui fungsi jquery css.Dengan kedua set atribut kami, kami sekarang dapat beralih di antara mereka dengan cara yang mulus. Hanya ubah
data-base
ke ketinggian (tetap) yang Anda inginkan dan alihkan kelas .read-more untuk ID Anda sendiriAnda semua bisa melihatnya bekerja di FIDDLE biola
sumber
Jika yang Anda inginkan adalah menampilkan dan menyembunyikan say a div, maka kode ini akan memungkinkan Anda menggunakan jQuery untuk menghidupkan. Anda dapat membuat jQuery menghidupkan sebagian besar ketinggian yang Anda inginkan atau Anda bisa mengelabui animasi dengan menjiwai ke 0px. jQuery hanya membutuhkan ketinggian yang ditetapkan oleh jQuery untuk mengubahnya menjadi otomatis. Jadi .animate menambahkan style = "" ke elemen yang dikonversi .css (height: auto).
Cara terbersih saya telah melihat pekerjaan ini adalah untuk menghidupkan sekitar ketinggian yang Anda harapkan, kemudian biarkan mengatur otomatis dan dapat terlihat sangat mulus ketika dilakukan dengan benar. Anda bahkan dapat menghidupkan masa lalu apa yang Anda harapkan dan itu akan kembali. Animasi ke 0px pada durasi 0 hanya cukup menjatuhkan ketinggian elemen ke ketinggian otomatisnya. Bagi mata manusia, itu tetap terlihat animasi. Nikmati..
Maaf saya tahu ini adalah posting lama, tetapi saya merasa ini akan relevan bagi pengguna yang mencari fungsi ini masih dengan jQuery yang menemukan posting ini.
sumber
Saya mengumpulkan sesuatu yang melakukan persis apa yang saya cari dan tampak hebat. Menggunakan scrollHeight suatu elemen membuat Anda ketinggian ketika itu dimuat di DOM.
sumber