การเปลี่ยนความสูงในการทำงานอาจเป็นเรื่องยุ่งยากเล็กน้อยเนื่องจากคุณต้องทราบความสูงที่จะทำให้เคลื่อนไหวได้ สิ่งนี้มีความซับซ้อนมากขึ้นโดยการเติมในองค์ประกอบให้เคลื่อนไหว
นี่คือสิ่งที่ฉันคิดขึ้น:
ใช้สไตล์เช่นนี้:
.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 ;
}
รวมเนื้อหาของคุณไว้ในคอนเทนเนอร์อื่นเพื่อให้คอนเทนเนอร์ที่คุณเลื่อนไม่มีช่องว่าง / ระยะขอบ / ขอบ:
<div id="Slider" class="slideup">
<div id="Actual">
Hello World Text
</div>
</div>
จากนั้นใช้สคริปต์บางส่วน (หรือมาร์กอัปที่เปิดเผยในเฟรมเวิร์กการผูก) เพื่อทริกเกอร์คลาส CSS
$("#Trigger").click(function () {
$("#Slider").toggleClass("slidedown slideup");
});
ตัวอย่างที่นี่:
http://plnkr.co/edit/uhChl94nLhrWCYVhRBUF?p=preview
ใช้งานได้ดีสำหรับเนื้อหาขนาดคงที่ สำหรับการละลายทั่วไปคุณสามารถใช้รหัสเพื่อหาขนาดขององค์ประกอบเมื่อเปิดใช้งานการเปลี่ยนแปลง ต่อไปนี้เป็นปลั๊กอิน jQuery ที่ทำเช่นนั้น:
$.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);
});
};
ซึ่งสามารถเรียกได้ดังนี้:
$ ("# Trigger") คลิก (function () {
if ($("#SlideWrapper").hasClass("height-transition-hidden"))
$("#SlideWrapper").slideDownTransition();
else
$("#SlideWrapper").slideUpTransition();
});
กับมาร์กอัปเช่นนี้:
<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>
ตัวอย่าง:
http://plnkr.co/edit/Wpcgjs3FS4ryrhQUAOcU?p=preview
ฉันเพิ่งเขียนสิ่งนี้ในโพสต์บล็อกหากคุณสนใจรายละเอียดเพิ่มเติม:
http://weblog.west-wind.com/posts/2014/Feb/22/Using-CSS-Transitions-to-SlideUp-and-SlideDown