Aller au contenu

Carousel

Carrousel de contenu rotatif avec contrôles de navigation, indicateurs et support de lecture automatique.

import { Carousel } from 'asterui'

Carrousel de base

Carrousel simple avec contrôles de navigation et indicateurs.

import { Carousel } from 'asterui'

function App() {
  return (
      <Carousel className="w-full max-w-md h-48">
        <Carousel.Item>
          <img src="https://picsum.photos/seed/1/400/200" alt="Slide 1" className="w-full h-full object-cover" />
        </Carousel.Item>
        <Carousel.Item>
          <img src="https://picsum.photos/seed/2/400/200" alt="Slide 2" className="w-full h-full object-cover" />
        </Carousel.Item>
        <Carousel.Item>
          <img src="https://picsum.photos/seed/3/400/200" alt="Slide 3" className="w-full h-full object-cover" />
        </Carousel.Item>
      </Carousel>
    )
}

export default App

Lecture automatique

Carrousel avec avancement automatique des diapositives. Se met en pause au survol.

import { Carousel } from 'asterui'

function App() {
  return (
      <Carousel autoplay autoplaySpeed={2000} className="w-full max-w-md h-48">
        <Carousel.Item>
          <img src="https://picsum.photos/seed/1/400/200" alt="Slide 1" className="w-full h-full object-cover" />
        </Carousel.Item>
        <Carousel.Item>
          <img src="https://picsum.photos/seed/2/400/200" alt="Slide 2" className="w-full h-full object-cover" />
        </Carousel.Item>
        <Carousel.Item>
          <img src="https://picsum.photos/seed/3/400/200" alt="Slide 3" className="w-full h-full object-cover" />
        </Carousel.Item>
      </Carousel>
    )
}

export default App

Effet de fondu

Carrousel avec transition en fondu au lieu du défilement.

import { Carousel } from 'asterui'

function App() {
  return (
      <Carousel effect="fade" autoplay autoplaySpeed={3000} className="w-full max-w-md h-48">
        <Carousel.Item>
          <img src="https://picsum.photos/seed/10/400/200" alt="Slide 1" className="w-full h-full object-cover" />
        </Carousel.Item>
        <Carousel.Item>
          <img src="https://picsum.photos/seed/11/400/200" alt="Slide 2" className="w-full h-full object-cover" />
        </Carousel.Item>
        <Carousel.Item>
          <img src="https://picsum.photos/seed/12/400/200" alt="Slide 3" className="w-full h-full object-cover" />
        </Carousel.Item>
      </Carousel>
    )
}

export default App

Carrousel vertical

Carrousel avec orientation verticale.

import { Carousel } from 'asterui'

function App() {
  return (
      <Carousel vertical className="h-48 w-full max-w-md">
        <Carousel.Item>
          <img src="https://picsum.photos/seed/4/400/200" alt="Slide 1" className="w-full h-full object-cover" />
        </Carousel.Item>
        <Carousel.Item>
          <img src="https://picsum.photos/seed/5/400/200" alt="Slide 2" className="w-full h-full object-cover" />
        </Carousel.Item>
        <Carousel.Item>
          <img src="https://picsum.photos/seed/6/400/200" alt="Slide 3" className="w-full h-full object-cover" />
        </Carousel.Item>
      </Carousel>
    )
}

export default App

Sans flèches

Carrousel avec flèches masquées, navigation par points uniquement.

import { Carousel } from 'asterui'

function App() {
  return (
      <Carousel arrows={false} className="w-full max-w-md h-48">
        <Carousel.Item>
          <img src="https://picsum.photos/seed/7/400/200" alt="Slide 1" className="w-full h-full object-cover" />
        </Carousel.Item>
        <Carousel.Item>
          <img src="https://picsum.photos/seed/8/400/200" alt="Slide 2" className="w-full h-full object-cover" />
        </Carousel.Item>
        <Carousel.Item>
          <img src="https://picsum.photos/seed/9/400/200" alt="Slide 3" className="w-full h-full object-cover" />
        </Carousel.Item>
      </Carousel>
    )
}

export default App

Position des points

Positionner les points indicateurs à différents emplacements.

import { Carousel, Space } from 'asterui'

function App() {
  return (
      <Space direction="vertical" size="lg" className="w-full">
        <Carousel dotPlacement="top" className="w-full max-w-md h-32">
          <Carousel.Item>
            <div className="bg-info text-info-content h-full flex items-center justify-center">Top Dots</div>
          </Carousel.Item>
          <Carousel.Item>
            <div className="bg-success text-success-content h-full flex items-center justify-center">Slide 2</div>
          </Carousel.Item>
        </Carousel>
        <Carousel dotPlacement="start" arrows={false} className="w-full max-w-md h-32">
          <Carousel.Item>
            <div className="bg-warning text-warning-content h-full flex items-center justify-center">Start Dots</div>
          </Carousel.Item>
          <Carousel.Item>
            <div className="bg-error text-error-content h-full flex items-center justify-center">Slide 2</div>
          </Carousel.Item>
        </Carousel>
      </Space>
    )
}

export default App

Contenu personnalisé

Carrousel avec contenu de diapositive personnalisé comme des cartes.

import { Carousel, Card, Button } from 'asterui'

function App() {
  return (
      <Carousel className="w-full max-w-md">
        <Carousel.Item>
          <Card title="Feature 1" className="bg-base-200 h-full">
            <p>Discover amazing features</p>
            <Button color="primary" size="sm">Learn More</Button>
          </Card>
        </Carousel.Item>
        <Carousel.Item>
          <Card title="Feature 2" className="bg-base-200 h-full">
            <p>Powerful and flexible</p>
            <Button color="secondary" size="sm">Explore</Button>
          </Card>
        </Carousel.Item>
      </Carousel>
    )
}

export default App
PropriétéDescriptionTypeDéfaut
childrenDiapositives du carrousel (composants Carousel.Item)ReactNode-
activeIndexIndex de la diapositive actuelle (mode contrôlé)number-
defaultActiveIndexIndex de diapositive par défaut (mode non contrôlé)number0
autoplayAvancement automatique des diapositivesbooleanfalse
autoplaySpeedIntervalle de lecture automatique en millisecondesnumber3000
speedDurée de l’animation en millisecondesnumber500
arrowsAfficher les flèches de navigation précédent/suivantbooleantrue
dotsAfficher les points indicateurs de diapositiveboolean | { className?: string }true
dotPlacementPosition des points indicateurs'top' | 'bottom' | 'start' | 'end''bottom'
effectEffet de transition'scrollx' | 'fade''scrollx'
infiniteActiver la boucle infiniebooleantrue
pauseOnHoverMettre en pause la lecture automatique au survolbooleantrue
verticalOrientation verticale du carrouselbooleanfalse
beforeChangeCallback avant le changement de diapositive(current: number, next: number) => void-
afterChangeCallback après le changement de diapositive(current: number) => void-
classNameClasses CSS supplémentairesstring-
data-testidID de test pour les tests ; les éléments enfants utilisent ceci comme préfixestring-
PropriétéDescriptionTypeDéfaut
childrenContenu de la diapositiveReactNode-
classNameClasses CSS supplémentairesstring-
data-testidID de test pour les testsstring-
PropriétéDescriptionTypeDéfaut
goToNaviguer vers une diapositive spécifique(index: number, animate?: boolean) => void-
nextAller à la diapositive suivante() => void-
prevAller à la diapositive précédente() => void-
  • Utilisez Carousel.Item pour envelopper chaque diapositive
  • Définissez une hauteur fixe sur le Carousel pour une mise en page cohérente
  • La lecture automatique se met en pause au survol pour une meilleure expérience utilisateur
  • Utilisez les touches fléchées pour naviguer lorsque le carrousel a le focus
  • Accédez aux méthodes goTo, next, prev via ref