Kodza

Ken Burns Slider

A background slideshow behind fixed words: each photo drifts slowly toward its point of interest, and the next is uncovered by a slow curtain in the same direction. A thin line counts the time, with a pause button.

Image effects No dependencies imageslideshowheroken-burnsbackground Images 2.21:1 · mobile 1:1.64 Added Nov 2026
/anim/ken-burns-slider/ GitHub Fullscreen

With your AI

Just ask.

Say it to your AI. It gets the exact code below, not its best guess, and knows where it goes.

Add the Kodza Ken Burns Slider to my page.

Not plugged in yet?
claude mcp add -t http kodza https://kodza.dev/api/mcp
Also in Codex, Cursor and VS Code.
kodza-ken-burns-slider.html
<section class="kodza-ken-burns-slider" data-interval="6000" aria-label="Maison Rempart">
  <ul class="kodza-ken-burns-slider__slides">
    <li class="kodza-ken-burns-slider__slide is-current" data-focus="60% 62%">
      <img class="kodza-ken-burns-slider__image" src="https://kodza.dev/media/kz-table-1400.webp" srcset="https://kodza.dev/media/kz-table-1400.webp 1400w, https://kodza.dev/media/kz-table-2400.webp 2400w" sizes="(max-width: 760px) 200vw, 100vw" width="1400" height="1050" alt="A white table set with two glasses and a bottle, facing a misty sea with a sailboat" fetchpriority="high">
    </li>
    <li class="kodza-ken-burns-slider__slide" data-focus="42% 56%">
      <img class="kodza-ken-burns-slider__image" src="https://kodza.dev/media/kz-arch-1400.webp" srcset="https://kodza.dev/media/kz-arch-1400.webp 1400w, https://kodza.dev/media/kz-arch-2400.webp 2400w" sizes="(max-width: 760px) 200vw, 100vw" width="1400" height="1400" alt="A concrete wall with a round-topped opening, sunlight pouring through it" loading="lazy">
    </li>
    <li class="kodza-ken-burns-slider__slide" data-focus="64% 50%">
      <img class="kodza-ken-burns-slider__image" src="https://kodza.dev/media/kz-columns-1400.webp" srcset="https://kodza.dev/media/kz-columns-1400.webp 1400w, https://kodza.dev/media/kz-columns-2400.webp 2400w" sizes="(max-width: 760px) 200vw, 100vw" width="1120" height="1400" alt="A row of square concrete pillars under a flat roof, casting striped shadows" loading="lazy">
    </li>
    <li class="kodza-ken-burns-slider__slide" data-focus="50% 58%">
      <img class="kodza-ken-burns-slider__image" src="https://kodza.dev/media/kz-overflow-1400.webp" srcset="https://kodza.dev/media/kz-overflow-1400.webp 1400w, https://kodza.dev/media/kz-overflow-2400.webp 2400w" sizes="(max-width: 760px) 200vw, 100vw" width="1400" height="1400" alt="A two-storey concrete house, its upper floor cantilevered over the ground" loading="lazy">
    </li>
  </ul>
  <div class="kodza-ken-burns-slider__content">
    <p class="kodza-ken-burns-slider__label">Maison Rempart · Saint-Malo</p>
    <h2 class="kodza-ken-burns-slider__title"><span class="kodza-ken-burns-slider__phrase">Nine rooms.</span> <span class="kodza-ken-burns-slider__phrase">The sea does the rest.</span></h2>
    <p class="kodza-ken-burns-slider__text">No spa, no welcome drink, no app to open the door. Thick walls, a good bed and the tide twice a day.</p>
    <a class="kodza-ken-burns-slider__button" href="#">Check availability<svg class="kodza-ken-burns-slider__arrow" viewBox="0 0 16 16" aria-hidden="true"><path d="M3 8h10M9 4l4 4-4 4" /></svg></a>
  </div>
  <div class="kodza-ken-burns-slider__controls">
    <span class="kodza-ken-burns-slider__count"><span class="kodza-ken-burns-slider__index"><span>01</span></span> / <span class="kodza-ken-burns-slider__total">04</span></span>
    <span class="kodza-ken-burns-slider__line" aria-hidden="true"><span class="kodza-ken-burns-slider__fill"></span></span>
    <button class="kodza-ken-burns-slider__pause" type="button" aria-pressed="false" aria-label="Pause the slideshow"><svg class="kodza-ken-burns-slider__icon" viewBox="0 0 16 16" aria-hidden="true"><path class="kodza-ken-burns-slider__bars" d="M5.5 4v8M10.5 4v8" /><path class="kodza-ken-burns-slider__play" d="M5.5 3.8v8.4L12 8z" /></svg></button>
  </div>
</section>

Checked

Checked before you paste.

Robots poked at it before you did. Every component goes through the same checks, and again each time it changes.

What ranLast run
Accessibilityaxe-core 4.10.2: the WCAG 2.1 A and AA rules, plus best practices. 0 issues
KeyboardThe Tab key gets there, and the focus ring shows when it does. Passed
Reduced motionTurn on reduced motion and what moved just appears. Nothing loops. Passed
Light and darkThe same checks on both themes, contrast included. Passed
WordPressPasted into Twenty Twenty-Five, Twenty Twenty-One, Astra, Blocksy, GeneratePress, Hello Elementor, Kadence and OceanWP. Nothing to flag. 8 / 8 themes
Robots checked this. A human with VoiceOver hasn't yet.
KeyboardPress them in the preview
On the pause button
  • Pauses the slideshow, or starts it againEnter/Space

More like this

More in Image effects