Reveals

Slide Reveal Animation

Uncovers from the bottom in one clean sweep.

Card title

Supporting copy goes here.

Edit this in the studio

Opens with this animation loaded. Nothing is uploaded — the scene travels in the link.

animation.css
.slide-reveal {
  transform: translate3d(130px, 90px, 0);
  box-shadow: 0px 10px 30px 0px #00000059;
  clip-path: inset(0% 0% 0% 0%);
  width: 220px;
  height: 140px;
  background: #1c1e2a;
  border-radius: 18px;
  color: #e7e9ee;
  font-size: 14px;
  animation: slide-reveal-anim 800ms linear 0ms infinite both;
  will-change: transform, opacity;
}

@keyframes slide-reveal-anim {
  0% {
    clip-path: inset(0% 0% 100% 0%);
    animation-timing-function: ease-out;
  }
  100% {
    clip-path: inset(0% 0% 0% 0%);
  }
}

@media (prefers-reduced-motion: reduce) {
  .slide-reveal {
    animation: none;
    transition: none;
  }
}

Why it is built this way

A single inset value animating to zero. The cheapest reveal in this set, and unlike a height animation it never touches layout.

What it animates

1 property across 1 CSS declaration. The bar shows when each one is moving.

Bottom
clip-path
100 0
2 stopsrepaint

What it costs to run

Clip-path repaints on every frame rather than running on the compositor. There is no reflow, so this is far cheaper than animating width or height — but keep the painted area modest.

It runs for 0.80s across 2 keyframe stops, with every property moving over the same window.

One curve throughout: Ease Out on a card. Keeping a single easing across every property is what makes a multi-property animation read as one movement rather than several things happening at once.

Accessibility

Nothing here hides content — clip-path moves over 0.80s and the element is visible throughout. The exported prefers-reduced-motion guard still silences it, which matters most for the looping ones: motion that never stops is the kind that makes people feel unwell.

Related animations

revealclip-pathslideinset