Nur CSS-Tailwind-CSS-Karussell mit Scroll-Snap. Horizontales Folienlayout mit Navigationssteuerelementen und kein JavaScript erforderlich. WCAG AA zugänglich, funktioniert mit Django, HTMX, Laravel, React und jedem Stack.
Karussellkomponenten zeigen mehrere Elemente in einem rotierenden oder scrollbaren Container an, ideal für die Präsentation von Bildern, Erfahrungsberichten, Produktgalerien oder vorgestellten Inhalten. Karussells basieren auf semantischem HTML und reibungslosem Scrollverhalten und unterstützen horizontale und vertikale Layouts mit Snap-Alignment. Das Frutjam-Karussellsystem eignet sich perfekt für Heldenbereiche, Produktgalerien, Testimonial-Anzeigen und Inhaltsschieberegler.
Nur CSS, kein JavaScript erforderlich. WCAG AA zugänglich und Framework-unabhängig – funktioniert mit Django, HTMX, Laravel, React und jedem Stack.
| Klasse | Typ | Beschreibung |
|---|---|---|
| carousel | Base | Horizontal scrollbarer Container mit Snap-Verhalten |
| carousel-item | Modifikator | Einzelne Rutsche im Karussell |
| carousel-vertical | Modifikator | Vertikale Scrollrichtung |
| carousel-center | Modifikator | Ausrichtung auf die Mitte jedes Elements ausrichten |
| carousel-end | Modifikator | Ausrichtung am Ende jedes Elements einrasten lassen |
Grundlegende Verwendung
Erstellen Sie ein einfaches horizontales Karussell mit scrollbaren Elementen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <div class="carousel w-full gap-4 p-4 bg-base-100"> <div class="carousel-item w-96"> <div class="badge badge-primary">Featured</div> </div> <div class="carousel-item w-96"> <div class="badge badge-secondary">Popular</div> </div> <div class="carousel-item w-96"> <div class="badge badge-accent">Trending</div> </div> <div class="carousel-item w-96"> <div class="badge badge-info">New</div> </div> </div> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <div className="carousel w-full gap-4 p-4 bg-base-100"> <div className="carousel-item w-96"> <div className="badge badge-primary">Featured</div> </div> <div className="carousel-item w-96"> <div className="badge badge-secondary">Popular</div> </div> <div className="carousel-item w-96"> <div className="badge badge-accent">Trending</div> </div> <div className="carousel-item w-96"> <div className="badge badge-info">New</div> </div> </div> |
Karussell mit Bildern
Zeigen Sie Bildergalerien mit reibungslosem Scrollen und ansprechender Größenanpassung an.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <div class="carousel w-full gap-2"> <div class="carousel-item w-full"> <picture> <source media="(max-width: 640px)" srcset="https://cdn.frutjam.com/images/photo-2.jpg?format=webp&width=640&height=360"> <img src="https://cdn.frutjam.com/images/photo-2.jpg?format=webp&width=800&height=450" alt="Image 1" class="w-full" loading="lazy" /> </picture> </div> <div class="carousel-item w-full"> <picture> <source media="(max-width: 640px)" srcset="https://cdn.frutjam.com/images/photo-3.jpg?format=webp&width=640&height=360"> <img src="https://cdn.frutjam.com/images/photo-3.jpg?format=webp&width=800&height=450" alt="Image 2" class="w-full" loading="lazy" /> </picture> </div> <div class="carousel-item w-full"> <picture> <source media="(max-width: 640px)" srcset="https://cdn.frutjam.com/images/photo-4.jpg?format=webp&width=640&height=360"> <img src="https://cdn.frutjam.com/images/photo-4.jpg?format=webp&width=800&height=450" alt="Image 3" class="w-full" loading="lazy" /> </picture> </div> </div> |
Karussellmitte ausgerichtet
Präsentieren Sie Karussellelemente mit zentraler Ausrichtung und Abstand zwischen den Karten.
Card 1
Featured product or content
Card 2
Popular selection
Card 3
Trending now
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <div class="carousel carousel-center gap-4 p-4 bg-base-200 rounded-lg"> <div class="carousel-item"> <div class="card card-primary w-80"> <div class="card-content"> <h2 class="card-title">Card 1</h2> <p>Featured product or content</p> </div> </div> </div> <div class="carousel-item"> <div class="card card-secondary w-80"> <div class="card-content"> <h2 class="card-title">Card 2</h2> <p>Popular selection</p> </div> </div> </div> <div class="carousel-item"> <div class="card card-accent w-80"> <div class="card-content"> <h2 class="card-title">Card 3</h2> <p>Trending now</p> </div> </div> </div> </div> |
Karussell vertikal
Erstellen Sie ein vertikales Karussell zum Scrollen von Elementen von oben nach unten.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <div class="carousel carousel-vertical h-96 gap-2 p-2 bg-base-100"> <div class="carousel-item h-32"> <div class="badge badge-lg badge-primary">Item 1</div> </div> <div class="carousel-item h-32"> <div class="badge badge-lg badge-secondary">Item 2</div> </div> <div class="carousel-item h-32"> <div class="badge badge-lg badge-accent">Item 3</div> </div> <div class="carousel-item h-32"> <div class="badge badge-lg badge-info">Item 4</div> </div> </div> |
Karussell mit Navigation
Fügen Sie Schaltflächen für die manuelle Navigation zwischen Karussellelementen mithilfe von Ankerlinks hinzu.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <div class="carousel w-full"> <div id="slide1" class="carousel-item relative w-full"> <div class="badge badge-primary w-full h-32">Slide 1</div> <div class="absolute inset-x-0 top-1/2 flex justify-between px-2"> <a href="#slide4" class="btn btn-circle btn-sm btn-ghost" aria-label="Previous slide">❮</a> <a href="#slide2" class="btn btn-circle btn-sm btn-ghost" aria-label="Next slide">❯</a> </div> </div> <div id="slide2" class="carousel-item relative w-full"> <div class="badge badge-secondary w-full h-32">Slide 2</div> <div class="absolute inset-x-0 top-1/2 flex justify-between px-2"> <a href="#slide1" class="btn btn-circle btn-sm btn-ghost" aria-label="Previous slide">❮</a> <a href="#slide3" class="btn btn-circle btn-sm btn-ghost" aria-label="Next slide">❯</a> </div> </div> <div id="slide3" class="carousel-item relative w-full"> <div class="badge badge-accent w-full h-32">Slide 3</div> <div class="absolute inset-x-0 top-1/2 flex justify-between px-2"> <a href="#slide2" class="btn btn-circle btn-sm btn-ghost" aria-label="Previous slide">❮</a> <a href="#slide4" class="btn btn-circle btn-sm btn-ghost" aria-label="Next slide">❯</a> </div> </div> <div id="slide4" class="carousel-item relative w-full"> <div class="badge badge-info w-full h-32">Slide 4</div> <div class="absolute inset-x-0 top-1/2 flex justify-between px-2"> <a href="#slide3" class="btn btn-circle btn-sm" aria-label="Previous slide"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m15 18-6-6 6-6"/></svg> </a> <a href="#slide1" class="btn btn-circle btn-sm" aria-label="Next slide"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m9 18 6-6-6-6"/></svg> </a> </div> </div> </div> |
Karussell mit Punktindikatoren
Verwenden Sie kleine Badge-Buttons als Navigationsindikatoren für mehrere Karussellelemente.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <div class="carousel w-full"> <div id="item1" class="carousel-item w-full"> <div class="badge badge-primary w-full h-32">1</div> </div> <div id="item2" class="carousel-item w-full"> <div class="badge badge-secondary w-full h-32">2</div> </div> <div id="item3" class="carousel-item w-full"> <div class="badge badge-accent w-full h-32">3</div> </div> <div id="item4" class="carousel-item w-full"> <div class="badge badge-info w-full h-32">4</div> </div> <div class="flex justify-center gap-2 pt-4"> <a href="#item1" class="btn btn-xs btn-outline">1</a> <a href="#item2" class="btn btn-xs btn-outline">2</a> <a href="#item3" class="btn btn-xs btn-outline">3</a> <a href="#item4" class="btn btn-xs btn-outline">4</a> </div> </div> |
JS & React Helper
Verwenden Sie createCarousel aus frutjam/js oder useCarousel aus frutjam/react, um programmgesteuert durch Folien zu navigieren – berücksichtigt prefers-reduced-motion automatisch.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <div class="flex gap-2 mb-3"> <button class="btn btn-sm" id="carousel-prev">← Prev</button> <button class="btn btn-sm" id="carousel-next">Next →</button> </div> <div class="carousel w-full" id="js-carousel"> <div class="carousel-item w-full"><div class="badge badge-primary w-full h-32">Slide 1</div></div> <div class="carousel-item w-full"><div class="badge badge-secondary w-full h-32">Slide 2</div></div> <div class="carousel-item w-full"><div class="badge badge-accent w-full h-32">Slide 3</div></div> </div> <script type="module"> import { createCarousel } from 'frutjam/js' const carousel = createCarousel(document.getElementById('js-carousel')) document.getElementById('carousel-prev').onclick = () => carousel.prev() document.getElementById('carousel-next').onclick = () => carousel.next() </script> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import { useCarousel } from 'frutjam/react' export default function CarouselDemo() { const carousel = useCarousel() return ( <> <div className="flex gap-2 mb-3"> <button className="btn btn-sm" onClick={carousel.prev}>← Prev</button> <button className="btn btn-sm" onClick={carousel.next}>Next →</button> </div> <div ref={carousel.ref} className="carousel w-full"> <div className="carousel-item w-full"><div className="badge badge-primary w-full h-32">Slide 1</div></div> <div className="carousel-item w-full"><div className="badge badge-secondary w-full h-32">Slide 2</div></div> <div className="carousel-item w-full"><div className="badge badge-accent w-full h-32">Slide 3</div></div> </div> </> ) } |
Verwenden Sie Claude Code, Cursor oder einen anderen KI-Editor?
Cherry MCP stellt Ihrem KI-Editor bei Bedarf die genauen Karussell-Klassennamen und -Strukturen zur Verfügung. Keine halluzinierten Klassen mehr.