# Carousel 3D

> A true 3D perspective ring carousel — six landscape photographs on a rotating cylinder built from `perspective` + `rotateY` + `translateZ`, spun by grab-and-drag (mouse and touch) with lerp-smoothed inertial momentum, radius solved with trigonometry and recomputed on resize.

- Category: Carousel
- Frameworks: Vanilla, React + CSS, React + Tailwind
- Design system: Aperture
- Dark mode: yes
- Access: premium (Atheros AI Pass)
- Tags: 3d
- Page: https://builder.atheros.ai/components/carousel-3d
- Preview: https://d17nmjscumqk5d.cloudfront.net/builder/templates/tpl_builder_carousel_3d/preview-680be9fc712e.webp

## Features

- True 3D ring: six image plates placed on a cylinder via `perspective`, per-cell `rotateY`, and `translateZ`
- Grab-and-drag spin for mouse and touch, with lerp-smoothed inertial momentum in a `requestAnimationFrame` loop
- Cylinder radius solved with trigonometry (`itemWidth / 2 / tan(π / count)`) and recomputed on every resize
- Data-driven: cells render from an image array through a `fetchImages()` seam ready to swap for a real API
- Keyboard rotation (Left/Right arrows) plus a polite live region that announces the front-facing image
- Transform-driven motion only — no layout-property animation, so it stays smooth and compliant
- Lazy image reveal with a shimmer skeleton per plate, fading in as each WebP decodes
- Honours `prefers-reduced-motion` — animations collapse and the ring snaps instead of easing

## Accessibility

- **Carousel region** — `role="region"` `aria-roledescription="carousel"` with `aria-label`
- **Slide groups** — `role="group"` `aria-roledescription="slide"` with a per-image `aria-label`
- **Live region** — `aria-live="polite"` announces the front-facing image
- **Keyboard nav** — `ArrowLeft`/`ArrowRight` rotate the ring when the region is focused
- **Focus indicators** — `:focus-visible` with a `--ring` outline
- **Image alt text** — Every plate image carries descriptive `alt` text
- **Reduced motion** — `prefers-reduced-motion: reduce` disables easing and animation
- **Viewport** — `100dvh` for a mobile-safe stage height

## Keyboard shortcuts

- `ArrowLeft` — Rotate the ring one image left
- `ArrowRight` — Rotate the ring one image right

## Common questions

**Which frameworks is Carousel 3D available in?**

Carousel 3D ships as Vanilla, React + CSS and React + Tailwind — HTML, CSS, JS and React source you can copy, download or clone into Atheros AI Builder.

**Is Carousel 3D free?**

Carousel 3D is a premium component. Anyone can preview it; the source, downloads and AI customisation are included with Atheros AI Pass.

**Does Carousel 3D support dark mode?**

Yes. Carousel 3D ships light and dark themes, both drawn from the Aperture design system's tokens. Switch the preview to dark mode to compare them.

## Get the code

Preview Carousel 3D live, then sign in to copy or download the source, apply another design system, or ask the AI assistant to change it: https://builder.atheros.ai/components/carousel-3d

Every component on https://builder.atheros.ai is also reachable from Claude Code, Cursor and Codex through the Atheros MCP server (paid plans). Component index: https://builder.atheros.ai/llms-components.txt
