Membuat transisi tinggi agar berfungsi bisa sedikit rumit terutama karena Anda harus mengetahui ketinggian yang akan dianimasikan. Hal ini semakin diperumit dengan padding di elemen yang akan dianimasikan.
Inilah yang saya dapatkan:
gunakan gaya seperti ini:
.slideup, .slidedown {
max-height: 0;
overflow-y: hidden;
-webkit-transition: max-height 0.8s ease-in-out;
-moz-transition: max-height 0.8s ease-in-out;
-o-transition: max-height 0.8s ease-in-out;
transition: max-height 0.8s ease-in-out;
}
.slidedown {
max-height: 60px ;
}
Bungkus konten Anda ke dalam wadah lain sehingga wadah yang Anda geser tidak memiliki bantalan / margin / batas:
<div id="Slider" class="slideup">
<div id="Actual">
Hello World Text
</div>
</div>
Kemudian gunakan beberapa skrip (atau markup deklaratif dalam kerangka kerja yang mengikat) untuk memicu kelas CSS.
$("#Trigger").click(function () {
$("#Slider").toggleClass("slidedown slideup");
});
Contoh di sini:
http://plnkr.co/edit/uhChl94nLhrWCYVhRBUF?p=preview
Ini berfungsi dengan baik untuk konten ukuran tetap. Untuk solusi yang lebih umum, Anda dapat menggunakan kode untuk mengetahui ukuran elemen saat transisi diaktifkan. Berikut ini adalah plug-in jQuery yang melakukan hal itu:
$.fn.slideUpTransition = function() {
return this.each(function() {
var $el = $(this);
$el.css("max-height", "0");
$el.addClass("height-transition-hidden");
});
};
$.fn.slideDownTransition = function() {
return this.each(function() {
var $el = $(this);
$el.removeClass("height-transition-hidden");
$el.css("max-height", "none");
var height = $el.outerHeight();
$el.css("max-height", "0");
setTimeout(function() {
$el.css({
"max-height": height
});
}, 1);
});
};
yang bisa dipicu seperti ini:
$ ("# Trigger"). Click (function () {
if ($("#SlideWrapper").hasClass("height-transition-hidden"))
$("#SlideWrapper").slideDownTransition();
else
$("#SlideWrapper").slideUpTransition();
});
melawan markup seperti ini:
<style>
#Actual {
background: silver;
color: White;
padding: 20px;
}
.height-transition {
-webkit-transition: max-height 0.5s ease-in-out;
-moz-transition: max-height 0.5s ease-in-out;
-o-transition: max-height 0.5s ease-in-out;
transition: max-height 0.5s ease-in-out;
overflow-y: hidden;
}
.height-transition-hidden {
max-height: 0;
}
</style>
<div id="SlideWrapper" class="height-transition height-transition-hidden">
<div id="Actual">
Your actual content to slide down goes here.
</div>
</div>
Contoh:
http://plnkr.co/edit/Wpcgjs3FS4ryrhQUAOcU?p=preview
Saya menulis ini baru-baru ini di posting blog jika Anda tertarik dengan detail lebih lanjut:
http://weblog.west-wind.com/posts/2014/Feb/22/Using-CSS-Transitions-to-SlideUp-and-SlideDown