Kodza

Hover List Preview

Point at a row and its picture shows in one frame that follows the pointer, wiping to the next picture as you move down the list. Panel mode, keyboard and touch thumbnails included.

Image effects No dependencies listhoverimageteamportfolioservices Added Oct 2026
/anim/hover-list-preview/ 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 Hover List Preview 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-hover-list-preview.html
<div class="kodza-hover-list">
  <ul class="kodza-hover-list__items" aria-label="Selected work">
    <li>
      <a class="kodza-hover-list__row" href="#" data-image="https://kodza.dev/media/kz-arch-1400.webp">
        <span class="kodza-hover-list__name">The Arch</span>
        <span class="kodza-hover-list__detail">Single entry point</span>
        <span class="kodza-hover-list__meta">2026</span>
      </a>
    </li>
    <li>
      <a class="kodza-hover-list__row" href="#" data-image="https://kodza.dev/media/kz-columns-1400.webp">
        <span class="kodza-hover-list__name">Seven Columns</span>
        <span class="kodza-hover-list__detail">A grid, no framework</span>
        <span class="kodza-hover-list__meta">2025</span>
      </a>
    </li>
    <li>
      <a class="kodza-hover-list__row" href="#" data-image="https://kodza.dev/media/kz-float-1400.webp">
        <span class="kodza-hover-list__name">Float</span>
        <span class="kodza-hover-list__detail">Position: absolute</span>
        <span class="kodza-hover-list__meta">2025</span>
      </a>
    </li>
    <li>
      <a class="kodza-hover-list__row" href="#" data-image="https://kodza.dev/media/kz-steps-1400.webp">
        <span class="kodza-hover-list__name">Stairs to Prod</span>
        <span class="kodza-hover-list__detail">Staging, then main</span>
        <span class="kodza-hover-list__meta">2024</span>
      </a>
    </li>
    <li>
      <a class="kodza-hover-list__row" href="#" data-image="https://kodza.dev/media/kz-stack-1400.webp">
        <span class="kodza-hover-list__name">The Stack</span>
        <span class="kodza-hover-list__detail">Full stack, literally</span>
        <span class="kodza-hover-list__meta">2023</span>
      </a>
    </li>
  </ul>
</div>

<div class="kodza-hover-list kodza-hover-list--panel">
  <ul class="kodza-hover-list__items" aria-label="Services">
    <li class="kodza-hover-list__group">
      <h3>Build <span class="kodza-hover-list__group-count">3</span></h3>
    </li>
    <li>
      <a class="kodza-hover-list__row" href="#" data-image="https://kodza.dev/media/kz-block-1400.webp">
        <span class="kodza-hover-list__name">Design systems</span>
        <span class="kodza-hover-list__detail">Tokens, not opinions.</span>
      </a>
    </li>
    <li>
      <a class="kodza-hover-list__row" href="#" data-image="https://kodza.dev/media/kz-float-1400.webp">
        <span class="kodza-hover-list__name">Front-end</span>
        <span class="kodza-hover-list__detail">Vanilla. Still delicious.</span>
      </a>
    </li>
    <li>
      <a class="kodza-hover-list__row" href="#" data-image="https://kodza.dev/media/kz-arch-1400.webp">
        <span class="kodza-hover-list__name">WordPress</span>
        <span class="kodza-hover-list__detail">Yes, we still do that.</span>
      </a>
    </li>
    <li class="kodza-hover-list__group">
      <h3>Ship <span class="kodza-hover-list__group-count">2</span></h3>
    </li>
    <li>
      <a class="kodza-hover-list__row" href="#" data-image="https://kodza.dev/media/kz-steps-1400.webp">
        <span class="kodza-hover-list__name">Motion</span>
        <span class="kodza-hover-list__detail">60 fps or it didn't ship.</span>
      </a>
    </li>
    <li>
      <a class="kodza-hover-list__row" href="#" data-image="https://kodza.dev/media/kz-columns-1400.webp">
        <span class="kodza-hover-list__name">Performance</span>
        <span class="kodza-hover-list__detail">Fast on a cheap phone.</span>
      </a>
    </li>
  </ul>
</div>

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 a row
  • Moves between rows, the picture follows the focusTab/⇧Tab
On a row, while its picture shows
  • Hides the picture, focus stays on the rowEsc

More like this

More in Image effects