React Carousel 개요

    Ignite UI for React 텍스트 슬라이드, 링크 및 기타 HTML 요소가 포함된 이미지 컬렉션을 앞뒤로 탐색하는 사용자에게 슬라이드쇼와 같은 웹 경험을 만드는 가장 유연한 방법을 제공하는 반응형 경량 구성 요소입니다.

    React Carousel 구성 요소를 사용하면 애니메이션, 슬라이드 전환 및 사용자 지정을 사용할 수 있으므로 인터페이스를 쉽게 조정하고 사용자 정의 캐러셀 React 구축할 수 있습니다.

    아래에서 볼 수 있는 React Carousel 데모는 이미지만 포함된 슬라이드를 보여줍니다.

    용법

    먼저, 다음 명령을 실행하여 Ignite UI for React 설치해야 합니다.

    npm install igniteui-react
    

    그런 다음 필요한 CSS를 IgrCarousel 가져오고 다음과 같이 모듈을 등록해야 합니다.

    import { IgrCarousel, IgrCarouselSlide } from 'igniteui-react'; import 'igniteui-webcomponents/themes/light/bootstrap.css';

    Ignite UI for React에 대한 완전한 소개는 '시작 주제'를 읽어보세요.

    이제 Ignite UI for React Carousel을 가져왔으므로 및 해당 슬라이드의 IgrCarousel 기본 구성부터 시작할 수 있습니다.

    선택기를 IgrCarousel 사용하여 슬라이드를 래핑합니다. 슬라이드에는 다른 구성 요소를 포함하여 유효한 html 콘텐츠가 포함될 수 있습니다.

    <IgrCarousel> <IgrCarouselSlide> <img src="assets/images/carousel/ignite-ui-angular-indigo-design.png"/> </IgrCarouselSlide> <IgrCarouselSlide> <img src="assets/images/carousel/slider-image-chart.png"/> </IgrCarouselSlide> <IgrCarouselSlide> <img src="assets/images/carousel/ignite-ui-angular-charts.png"/> </IgrCarouselSlide> </IgrCarousel>

    슬라이드가 기본적으로 활성화되도록 하려면 다음 속성을 사용합니다 Active.

    <IgrCarousel> ... <IgrCarouselSlide> ... </IgrCarouselSlide> <IgrCarouselSlide active={true}> ... </IgrCarouselSlide> </IgrCarousel>

    [! 참고] 활성 슬라이드가 설정되어 있지 않으면 첫 번째 슬라이드가 기본적으로 설정됩니다. 초기 렌더링이나 이후 업데이트에서 여러 개의 활성 슬라이드가 있을 경우, 마지막 슬라이드만 고려됩니다.

    기본적으로, IgrCarouseldisableLoop 속성은 다음과 같이 설정되었습니다 거짓 (루프는 다음 동작을 사용해 첫 번째 슬라이드가 마지막 슬라이드 다음에 오거나, 이전 동작을 사용해 마지막 슬라이드가 첫 번째 슬라이드 다음에 올 때 발생합니다.) 루프 동작은 다음 값의 값을 설정하여 비활성화할 수 있습니다. disableLoop property를 .

    <IgrCarousel disableLoop={true}> ... </IgrCarousel>

    각 슬라이드 인덱스를 추적하기 위해 캐러셀에는 기본적으로 캐러셀에 배치 end 되는 표시기가 있습니다. 이 동작을 변경하려면 속성을 사용하여 indicatorsOrientation 할당합니다 start.

    <IgrCarousel indicatorsOrientation={CarouselIndicatorsOrientation.Start}> ... </IgrCarousel>

    기본적으로 탐색 IgrCarousel 버튼과 표시기가 표시됩니다. hideIndicators이 속성을 사용하여 표시기를 숨기고 hideNavigation 속성을 사용하여 탐색 단추를 숨깁니다.

    <IgrCarousel hideNavigation={true} hideIndicators={true}> ... </IgrCarousel>

    IgrCarousel 수직 모드를 지원합니다. vertical 속성을 사용하여 사용하도록 설정합니다.

    <IgrCarousel vertical={true}> ... </IgrCarousel>

    맞춤 지표

    To add React custom carousel indicators, use the IgrCarouselIndicator:

    <IgrCarousel>
      <IgrCarouselIndicator>
        <span key="empty">🤍</span>
        <span slot="active">
          ❤️
        </span>
      </IgrCarouselIndicator>
      <IgrCarouselIndicator>
        <span key="empty">🤍</span>
        <span slot="active">
          ❤️
        </span>
      </IgrCarouselIndicator
      <IgrCarouselSlide>
        <img
          src="https://ko.infragistics.com/angular-demos-lob/assets/images/carousel/ignite-ui-angular-indigo-design.png"
        />
      </IgrCarouselSlide>
      <IgrCarouselSlide key="second">
        <img src="https://ko.infragistics.com/angular-demos-lob/assets/images/carousel/slider-image-chart.png"/>
      </IgrCarouselSlide>
    </IgrCarousel>
    

    Ignite UI for React Carousel 구성 요소를 사용하면 단일 지표의 활성 및 비활성 상태에 대해 서로 다른 요소를 사용할 수 있습니다. 인디케이터를 선언할 때 각 슬롯에 대해 두 개의 요소(empty 및 active)를 제공해야 하며, 이는 동일하더라도 마찬가지입니다.

    Custom navigation buttons

    이를 위해 및 next-button 슬롯을 previous-button 사용합니다.

    <IgrCarousel> <IgrIcon slot="previous-button" name="previous" collection="material"></IgrIcon> <IgrIcon slot="next-button" name="next" collection="material"></IgrIcon> ... </IgrCarousel>

    다른 구성 요소가 포함된 슬라이드

    이 캐러셀에는 양식과 이미지가 포함된 슬라이드가 포함됩니다.

    <IgrCarousel> <IgrCarouselSlide> <div> <img src="assets/images/svg/carousel/SignUp.svg" /> <form> <IgrInput type="text" placeholder="Username"> <IgrIcon slot="prefix" name="person"></IgrIcon> </IgrInput> <IgrInput type="password" placeholder="Password"> <IgrIcon slot="prefix" name="password"></IgrIcon> </IgrInput> <IgrButton type="reset"> <span>Sign In</span> </IgrButton> </form> </div> </IgrCarouselSlide> <IgrCarouselSlide> <div> <img src="assets/images/svg/carousel/Route.svg" /> <form> <IgrInput type="text" placeholder="Search"> <IgrIcon slot="prefix" name="search"></IgrIcon> </IgrInput> <IgrButton type="reset"> <span>Search</span> </IgrButton> </form> </div> </IgrCarouselSlide> </IgrCarousel>

    데모

    애니메이션

    애니메이션 슬라이드 전환은 최종 사용자에게 회전판과 상호 작용할 때 좋은 경험을 제공합니다.

    캐러셀은 기본적으로 애니메이션을 slide 사용하도록 구성되지만 대체 애니메이션으로도 지원됩니다 fade.

    Use the animationType property to change the animation.

    <IgrCarousel animationType="fade"> ... </IgrCarousel>

    Setting none to the animationType property disables the animations.

    데모

    아래 데모는 캐러셀이 지원하는 다양한 유형의 애니메이션을 보여줍니다.

    전환 및 탐색은 캐러셀의 가장 중요한 기능입니다.

    캐러셀의 탐색은 사용자가 모바일 장치에서 탐색 버튼, 표시기, 키보드 탐색 및 터치 조작을 통해 처리할 수 있습니다.

    터치 제스처

    기본적으로 캐러셀은 모든 터치 지원 장치에서 사용할 수 있습니다.

    캐러셀 애니메이션은 터치 장치에서 완벽하게 지원되므로 캐러셀은 모든 플랫폼과 일관되고 프로그레시브 웹 애플리케이션(PWA)에서 사용될 때 훌륭합니다.

    키보드 탐색

    • 탐색 버튼
      • SPACE 또는 ENTER 키 - 다음/이전 슬라이드로 이동합니다.
    • 지표
      • 🡐 키 - 이전(오른쪽에서 왼쪽 모드의 다음) 슬라이드로 이동합니다.
      • 🡒 키 - 다음(오른쪽에서 왼쪽 모드의 경우 이전) 슬라이드로 이동합니다.
      • HOME 키 - 첫 번째(오른쪽에서 왼쪽 모드의 마지막) 슬라이드로 이동합니다.
      • END 키 - 마지막(오른쪽에서 왼쪽 모드의 첫 번째) 슬라이드로 이동합니다.

    자동 전환

    IgrCarousel 사용자 상호 작용 없이 슬라이드를 자동으로 변경하도록 쉽게 구성할 수 있습니다. 이렇게 하면 속성에 대한 interval 전환 간격만 설정하여 자신만의 슬라이드 쇼를 만들 수 있으며, 이 간격은 슬라이드 전환 사이의 시간(밀리초)을 결정합니다.

    [! 참고] 마우스를 캐러셀 콘텐츠 위에 올리거나 키보드 포커스를 캐러셀 콘텐츠로 이동시키면 자동 전환이 일시정지됩니다. 마우스가 회전목마에서 멀어지거나 키보드 포커스가 회전목마 내용에서 벗어날 때 자동 전환이 재개됩니다. 이것은 다음에 설정함으로써 방지할 수 있습니다. disablePauseOnInteraction property를 .

    <IgrCarousel interval={2000} disablePauseOnInteraction={true}> ... </IgrCarousel>

    고급 예

    루핑이 활성화된 완전 자동화된 캐러셀을 만들어 보겠습니다. 표시기를 각 슬라이드의 썸네일 표현으로 구성합니다.

    이 목표를 달성하려면 캐러셀에 대해 다음 구성을 수행해야 합니다.

    캐러셀은 템플릿에서 다음과 같이 표시됩니다.

    const images = [
        {
            src: "assets/images/carousel/WonderfulCoast.png",
            alt: "Wonderful Coast",
        },
        {
            src: "assets/images/carousel/CulturalDip.png",
            alt: "Cultural Dip",
        },
        {
            src: "assets/images/carousel/GoldenBeaches.png",
            alt: "Golden Beaches",
        },
        {
            src: "assets/images/carousel/IslandOfHistory.png",
            alt: "Island Of History",
        },
        {
            src: "assets/images/carousel/AmazingBridge.png",
            alt: "Amazing Bridge",
        },
    ];
    
    <IgrCarousel
      disablePauseOnInteraction={true}
      hideNavigation={true}
      interval={2000}
      vertical={true}
      animationType="fade"
    >
      {images.map((image, index) => {
        return (
          <React.Fragment key={index}>
            <IgrCarouselSlide>
              <img src={image.src} alt={image.alt} />
            </IgrCarouselSlide>
            <IgrCarouselIndicator>
              <img
                className="blurred"
                src={image.src.replace(".png", "Thumb.png")}
                alt={`${image.alt} Thumb`}
                width="50"
                height="60"
              />
              <img
                slot="active"
                src={image.src.replace(".png", "Thumb.png")}
                alt={`${image.alt} Thumb Active`}
                width="50"
                height="60"
              />
            </IgrCarouselIndicator>
          </React.Fragment>
        );
      })}
    </IgrCarousel>
    

    이러한 구성의 결과는 다음과 같습니다.

    접근성

    WAI-ARIA 역할, 상태 및 속성

    • Carousel 기본 요소 역할은 특정 목적과 관련된 콘텐츠가 포함된 섹션인 region 이며 사용자는 쉽게 탐색할 수 있기를 원할 것입니다.
    • 캐러셀 표시기에는 역할 tab 있습니다. 사용자에게 렌더링할 탭 콘텐츠를 선택하기 위한 메커니즘을 제공하는 그룹화 레이블입니다.
    • 탭 집합(캐러셀 표시기)의 컨테이너 역할을 하는 요소는 역할 tablist이 있습니다.
    • 각 슬라이드 요소는 tabpanel 역할로 설정됩니다.

    ARIA 지원

    • Attributes
      • aria-roledescription을 "carousel"로 설정합니다.
      • aria-live- 스크린 리더가 라이브 영역에 대한 업데이트를 처리해야 하는 우선 순위를 설정하는 데 사용되며, 가능한 설정은 다음과 같습니다.offpolite. 기본 설정은 polite 이며 슬라이드 집합의 컨테이너 역할을 하는 요소로 설정됩니다. interval 옵션이 설정되고 캐러셀이 재생 중인 상태이면 aria-live 속성이 off로 설정됩니다.
      • aria-label (navigation buttons) - "Previous slide"/"Next slide".

    Slide component

    • Attributes
      • id - "igc-carousel-slide-${incremented_number}" 패턴을 따릅니다.
      • aria-roledescription을 "slide"로 설정합니다.
      • aria-label은 "${total}의 ${index + 1}" 패턴을 따릅니다.

    Indicator component

    • Attributes
      • aria-label은 "Slide ${index + 1}" 패턴을 따릅니다.
      • aria-selected는 활성 슬라이드에 따라 true 또는 false로 설정됩니다.

    API 참조

    추가 리소스