Höhenübergänge zum Laufen zu bringen kann etwas schwierig sein, vor allem, weil Sie die Höhe kennen müssen, für die Sie animieren möchten. Dies wird durch Auffüllen des zu animierenden Elements weiter erschwert.
Folgendes habe ich mir ausgedacht:
Verwenden Sie einen Stil wie diesen:
.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 ;
}
Wickeln Sie Ihren Inhalt in einen anderen Container, sodass der Container, den Sie verschieben, keine Polster / Ränder / Ränder aufweist:
<div id="Slider" class="slideup">
<div id="Actual">
Hello World Text
</div>
</div>
Verwenden Sie dann ein Skript (oder ein deklaratives Markup in Bindungsframeworks), um die CSS-Klassen auszulösen.
$("#Trigger").click(function () {
$("#Slider").toggleClass("slidedown slideup");
});
Beispiel hier:
http://plnkr.co/edit/uhChl94nLhrWCYVhRBUF?p=preview
Dies funktioniert gut für Inhalte mit fester Größe. Für eine allgemeinere Lösung können Sie Code verwenden, um die Größe des Elements zu ermitteln, wenn der Übergang aktiviert ist. Das Folgende ist ein jQuery-Plug-In, das genau das tut:
$.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);
});
};
was so ausgelöst werden kann:
$ ("# Trigger"). Klicken Sie auf (function () {
if ($("#SlideWrapper").hasClass("height-transition-hidden"))
$("#SlideWrapper").slideDownTransition();
else
$("#SlideWrapper").slideUpTransition();
});
gegen Markup wie folgt:
<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>
Beispiel:
http://plnkr.co/edit/Wpcgjs3FS4ryrhQUAOcU?p=preview
Ich habe dies kürzlich in einem Blog-Beitrag geschrieben, wenn Sie an weiteren Details interessiert sind:
http://weblog.west-wind.com/posts/2014/Feb/22/Using-CSS-Transitions-to-SlideUp-and-SlideDown