.slideDown() (since jQuery 1.0) displays matched elements with a sliding motion by animating height from 0 to full size. Content below shifts down to make room. Returns the jQuery object for chaining.
Remember
$("#panel").hide(); // start hidden
$("#panel").slideDown(); // default 400 ms
$("#panel").slideDown("slow"); // 600 ms
$("#panel").slideDown(600, "linear", function () { /* done */ });
// Hidden → height grows → fully visible
// Content below slides down as height increases
Hide the element first, then call .slideDown() from a click (or other) handler.
Start with a hidden element (.hide() or display: none).
On a user action, call .slideDown() (optional duration / easing / complete).
jQuery restores display and animates height from 0 to natural size.
Lower page content shifts down as the element expands.
Optional complete runs once per matched element when done.
Piece
Required?
Role
Matched set
Yes
Elements to reveal (should be hidden)
duration
No
Default 400; also "fast" / "slow"
easing
No
Since 1.4.3 — swing (default) or linear
complete
No
Once per element when its slide ends
Return value
—
jQuery object (chainable)
Pseudocode
Pseudocode
call $(elements).slideDown(duration?, easing?, complete?)
for each matched element:
if already visible:
little or no change
else:
restore display
animate height from 0 → natural height
content below shifts down
if complete was provided:
call complete once for this element
(this = the DOM element)
return the jQuery set for chaining
Reference
Cheat Sheet
Keep these facts handy while building slide reveals.
Topic
Detail
Syntax
.slideDown([duration] [, easing] [, complete])
Options form
.slideDown({ duration, easing, complete, … })
Since
jQuery 1.0 (easing arg since 1.4.3)
Default duration
400 ms
Presets
"fast" = 200 · "slow" = 600
Easing
swing (default) · linear
Start state
Element should be hidden first
Related
.slideUp() · .slideToggle()
Try it
Live Preview
Hide the panel, then slideDown with a chosen duration.
Panel content — slide me open after hiding.
Hide first, then Run a slideDown. Content below shifts as height grows.
Result
Ready — hide, then slideDown.
Code
jQuery Examples
Short, copy-ready snippets. Open DevTools, or use Try It Yourself for a live editor.
Example 1 — Slow Reveal on Click
Official pattern: element starts hidden; click slides it down over 600 ms.
jQuery
$("#clickme").on("click", function () {
$("#book").slideDown("slow", function () {
// Animation complete.
});
});
Click 1 → all boxes slideDown("slow")
Click 2 → all boxes .hide() instantly
Repeats based on :hidden check
How It Works
Check.:hidden on the first box picks the branch.
Reveal. Hidden → .slideDown("slow") on all boxes.
Hide. Visible → .hide() with no animation.
Note. For animated both ways, prefer .slideToggle().
Example 3 — slideDown with Per-Element Callback
Official idea: after each input finishes sliding, style it and focus the middle one.
jQuery
$("#push").on("click", function () {
$("input").slideDown(1000, function () {
$(this).attr("data-ready", "yes");
$(this).filter(".middle").trigger("focus");
$("#status").text("Slide finished for one input.");
});
});
.slideDown() has been part of jQuery since 1.0 (positional easing since 1.4.3). It works in every browser that runs your loaded jQuery version — no separate browser feature flag.
✓ Stable · jQuery 1.0+
jQuery .slideDown()
Supported across jQuery 1.x, 2.x, and 3.x. Prefer a current jQuery 3.x build. Height animation uses jQuery’s fx engine.
100%With jQuery
Google ChromeAll versions · Desktop & Mobile
Full support
Mozilla FirefoxAll versions · Desktop & Mobile
Full support
Apple SafariAll versions · macOS & iOS
Full support
Microsoft EdgeAll versions · Chromium & Legacy
Full support
Internet ExplorerIE 6+ · Legacy environments
Full support
OperaAll modern versions
Full support
.slideDown()Universal
Bottom line: Safe for panels, FAQs, and menus. Hide first, pick a duration, and guard rapid clicks with .stop(true, true) when needed.
Analysis
Performance Notes
Approach
Cost
Best for
One panel slideDown
Cheap
Accordions, dropdowns, FAQs
Many elements at once
More layout work
Prefer one wrapper when possible
Queued spam clicks
Wasted frames
.stop(true, true) before slide
Height animation triggers layout. One container is cheaper than sliding dozens of siblings — and clearing the queue avoids stacked reveals.
Remember
Key Takeaways
Role: reveal hidden elements by animating height (since 1.0).
Start: hide the element first — then slide down to expand.
Pair:.slideUp() to collapse; .slideToggle() for both directions.
One line:.slideDown() expands a hidden element’s height so the page content below slides open with it.
Frequently Asked Questions
.slideDown() displays matched elements with a sliding motion by animating height from zero to full size. Content below shifts down to make room. Use it for a vertical expand reveal instead of an instant .show().
1) .slideDown([duration] [, complete]) — optional duration and completion callback. 2) .slideDown(options) — an options object with duration, easing, queue, step, progress, and Promise-style callbacks. 3) .slideDown([duration] [, easing] [, complete]) — positional easing since jQuery 1.4.3.
.slideUp() collapses visible elements. .show() reveals instantly with no transition. .fadeIn() animates opacity, not height. .slideToggle() picks slideDown or slideUp from current visibility. .slideDown() only expands and shows.
Milliseconds, or the strings "fast" (200 ms) and "slow" (600 ms). Default is 400 ms when omitted.
Once per matched element when that element’s slide finishes — not once for the whole set. Use .promise().done() when you need a single callback after every element completes.
Yes. Start with display:none (or .hide()). Calling .slideDown() on already-visible elements has little effect because they are already expanded and shown.