Animation in jQuery

Learn to create custom animations with jQuery animate() method.

jQuery's .animate() method lets you create custom animations by gradually changing CSS properties.

Basic Animation

$(".box").animate({
    width: "300px",
    height: "200px",
    opacity: 0.5
}, 1000);  // Duration in milliseconds

Animation with Easing

// "swing" (default) and "linear" are built-in
$(".box").animate({
    left: "500px"
}, 1000, "swing");

$(".box").animate({
    left: "500px"
}, 1000, "linear");

Callback Function

$(".box").animate({
    opacity: 0,
    marginTop: "50px"
}, 800, function() {
    // Runs after animation completes
    $(this).remove();
    console.log("Animation done!");
});

Sequential Animations (Queuing)

// Animations queue by default
$(".box")
    .animate({ left: "300px" }, 500)
    .animate({ top: "200px" }, 500)
    .animate({ opacity: 0.5 }, 500)
    .animate({ opacity: 1 }, 500);

Relative Values

// Use += and -= for relative changes
$(".box").animate({
    left: "+=50px",    // Move 50px to the right
    top: "-=20px",     // Move 20px up
    fontSize: "+=4px"  // Increase font size by 4px
}, 400);

stop() — Stop Animations

// Stop current animation
$(".box").stop();

// Stop and clear the animation queue
$(".box").stop(true);

// Stop, clear queue, and jump to end
$(".box").stop(true, true);

Practical Example

// Animated notification
function showNotification(message) {
    $("<div>")
        .addClass("notification")
        .text(message)
        .appendTo("body")
        .css({ right: "-300px", opacity: 0 })
        .animate({ right: "20px", opacity: 1 }, 400)
        .delay(3000)
        .animate({ right: "-300px", opacity: 0 }, 400, function() {
            $(this).remove();
        });
}