Để chuyển đổi chiều cao hoạt động có thể hơi phức tạp, chủ yếu là vì bạn phải biết chiều cao để tạo hiệu ứng. Điều này còn phức tạp hơn nữa bằng cách đệm vào phần tử được làm động.
Đây là những gì tôi nghĩ ra:
sử dụng một phong cách như thế này:
.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 ;
}
Gói nội dung của bạn vào một vùng chứa khác để vùng chứa bạn đang trượt không có phần đệm / lề / đường viền:
<div id="Slider" class="slideup">
<div id="Actual">
Hello World Text
</div>
</div>
Sau đó, sử dụng một số tập lệnh (hoặc đánh dấu khai báo trong các khung liên kết) để kích hoạt các lớp CSS.
$("#Trigger").click(function () {
$("#Slider").toggleClass("slidedown slideup");
});
Ví dụ ở đây:
http://plnkr.co/edit/uhChl94nLhrWCYVhRBUF?p=preview
Điều này hoạt động tốt cho nội dung có kích thước cố định. Để có độ phân giải chung chung hơn, bạn có thể sử dụng mã để tìm ra kích thước của phần tử khi quá trình chuyển đổi được kích hoạt. Sau đây là một trình cắm thêm jQuery thực hiện điều đó:
$.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);
});
};
có thể được kích hoạt như thế này:
$ ("# Trigger"). Nhấp vào (function () {
if ($("#SlideWrapper").hasClass("height-transition-hidden"))
$("#SlideWrapper").slideDownTransition();
else
$("#SlideWrapper").slideUpTransition();
});
chống lại đánh dấu như thế này:
<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>
Ví dụ:
http://plnkr.co/edit/Wpcgjs3FS4ryrhQUAOcU?p=preview
Tôi đã viết điều này gần đây trong một bài đăng trên blog nếu bạn muốn biết thêm chi tiết:
http://weblog.west-wind.com/posts/2014/Feb/22/Using-CSS-Transitions-to-SlideUp-and-SlideDown