Motion on Scroll
Leverage the power of "motion" for easy-to-use animations on scroll. Scroll down for a demo!
Fade Animations
data-mos="fade"
data-mos="fade-up"
data-mos="fade-down"
data-mos="fade-left"
data-mos="fade-right"
data-mos="fade-up-right"
data-mos="fade-up-left"
data-mos="fade-down-right"
data-mos="fade-down-left"
Flip Animations
data-mos="flip-up"
data-mos="flip-down"
data-mos="flip-left"
data-mos="flip-right"
Slide Animations
data-mos="slide-up"
data-mos="slide-down"
data-mos="slide-left"
data-mos="slide-right"
Zoom Animations
data-mos="zoom-in"
data-mos="zoom-in-up"
data-mos="zoom-in-down"
data-mos="zoom-in-left"
data-mos="zoom-in-right"
data-mos="zoom-out"
data-mos="zoom-out-up"
data-mos="zoom-out-down"
data-mos="zoom-out-left"
data-mos="zoom-out-right"
Custom Animations
MOS.registerKeyframes("my-custom-keyframes", { opacity: [0, 1], rotate: [0, 360],});
<div data-mos="my-custom-keyframes"> my-custom-keyframes</div>
my-custom-keyframes
bouncy animation
MOS.registerAnimation("bouncy", (el, opts) => animate( el, { opacity: [0, 1], scale: [0.4, 1] }, { type: "spring", bounce: 0.5, duration: opts.timeUnits === "s" ? opts.duration : opts.duration / 1000, delay: opts.timeUnits === "s" ? opts.delay : opts.delay / 1000, }, ),);
<div data-mos="bouncy"> bouncy animation</div>
MOS.registerEasing("bouncy", [0.68, -0.55, 0.265, 1.55]);
<div data-mos="fade-up" data-mos-easing="bouncy"> fade-up w/ bouncy easing</div>
fade-up w/ bouncy easing
fade-up w/ dramatic easing
MOS.registerEasing("dramatic", "cubic-bezier(0.25, 0.46, 0.45, 0.94)");
<div data-mos="fade-up" data-mos-easing="dramatic"> fade-up w/ dramatic easing</div>