Here is my solution, you can use it as a jQuery plugin.
(function($) { 'use strict'; // Sort us out with the options parameters var getAnimOpts = function (a, b, c) { if (!a) { return {duration: 'normal'}; } if (!!c) { return {duration: a, easing: b, complete: c}; } if (!!b) { return {duration: a, complete: b}; } if (typeof a === 'object') { return a; } return { duration: a }; }, getUnqueuedOpts = function (opts) { return { queue: false, duration: opts.duration, easing: opts.easing }; }; // Declare our new effects $.fn.showDown = function (a, b, c) { var slideOpts = getAnimOpts(a, b, c), fadeOpts = getUnqueuedOpts(slideOpts); $(this).hide().css('opacity', 0).slideDown(slideOpts).animate({ opacity: 1 }, fadeOpts); }; $.fn.hideUp = function (a, b, c) { var slideOpts = getAnimOpts(a, b, c), fadeOpts = getUnqueuedOpts(slideOpts); $(this).show().css('opacity', 1).slideUp(slideOpts).animate({ opacity: 0 }, fadeOpts); }; }(jQuery));
Now you can use it the same way you would use the jQuerys.fadeIn (or fadeOut) effect.
// Show $('.alert').showDown('slow'); // Hide $('.alert').hideUp('fast', function() { // Animation complete: '.alert' is now hidden });
This will resize our height with the fading effect.
It was originally published on my blog .
Etienne Baudry Apr 23 '13 at 16:21 2013-04-23 16:21
source share