काम करने के लिए ऊंचाई में बदलाव करना थोड़ा मुश्किल हो सकता है क्योंकि आपको इसके लिए ऊंचाई को जानना होगा। यह एनिमेटेड होने के लिए तत्व में पैडिंग द्वारा आगे जटिल है।
यहां वह है जो मैंने जुटाया:
इस तरह से एक शैली का उपयोग करें:
.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>
फिर सीएसएस कक्षाओं को ट्रिगर करने के लिए कुछ स्क्रिप्ट (या बाध्यकारी फ्रेमवर्क में घोषणात्मक मार्कअप) का उपयोग करें।
$("#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);
});
};
जिसे इस तरह ट्रिगर किया जा सकता है:
$ ("# ट्रिगर")। क्लिक करें (फ़ंक्शन () {
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?==view
मैंने इसे हाल ही में एक ब्लॉग पोस्ट में लिखा है यदि आप अधिक विस्तार से रुचि रखते हैं:
http://weblog.west-wind.com/posts/2014/Feb/22/Using-CSS-Transitions-to-SlideUp-and-SlideDown