fadeOut() and slideUp() at the same time? fadeOut() and slideUp() at the same time? jquery jquery

fadeOut() and slideUp() at the same time?


You can do something like this, this is a full toggle version:

$("#mySelector").animate({ height: 'toggle', opacity: 'toggle' }, 'slow');

For strictly a fadeout:

$("#mySelector").animate({ height: 0, opacity: 0 }, 'slow');


Directly animating height results in a jerky motion on some web pages. However, combining a CSS transition with jQuery's slideUp() makes for a smooth disappearing act.

const slideFade = (elem) => {   const fade = { opacity: 0, transition: 'opacity 400ms' };   elem.css(fade).slideUp();   };slideFade($('#mySelector'));

Fiddle with the code:
https://jsfiddle.net/00Lodcqf/435

bye

In some situations, a very quick 100 millisecond pause to allow more fading creates a slightly smoother experience:

   elem.css(fade).delay(100).slideUp();

This is the solution I used in the dna.js project where you can view the code (github.com/dnajs/dna.js) for the dna.ui.slideFade() function to see additional support for toggling and callbacks.


The accepted answer by "Nick Craver" is definitely the way to go. The only thing I'd add is that his answer doesn't actually "hide" it, meaning the DOM still sees it as a viable element to display.

This can be a problem if you have margin's or padding's on the 'slid' element... they will still show. So I just added a callback to the animate() function to actually hide it after animation is complete:

$("#mySelector").animate({    height: 0,    opacity: 0,   margin: 0,   padding: 0}, 'slow', function(){   $(this).hide();});