React Carousel 개요
Ignite UI for React 텍스트 슬라이드, 링크 및 기타 HTML 요소가 포함된 이미지 컬렉션을 앞뒤로 탐색하는 사용자에게 슬라이드쇼와 같은 웹 경험을 만드는 가장 유연한 방법을 제공하는 반응형 경량 구성 요소입니다.
React Carousel 구성 요소를 사용하면 애니메이션, 슬라이드 전환 및 사용자 지정을 사용할 수 있으므로 인터페이스를 쉽게 조정하고 사용자 정의 캐러셀 React 구축할 수 있습니다.
React Carousel Example
아래에서 볼 수 있는 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>
[! 참고] 활성 슬라이드가 설정되어 있지 않으면 첫 번째 슬라이드가 기본적으로 설정됩니다. 초기 렌더링이나 이후 업데이트에서 여러 개의 활성 슬라이드가 있을 경우, 마지막 슬라이드만 고려됩니다.
예
Carousel Configuration
기본적으로, IgrCarousel 그 disableLoop 속성은 다음과 같이 설정되었습니다 거짓 (루프는 다음 동작을 사용해 첫 번째 슬라이드가 마지막 슬라이드 다음에 오거나, 이전 동작을 사용해 마지막 슬라이드가 첫 번째 슬라이드 다음에 올 때 발생합니다.) 루프 동작은 다음 값의 값을 설정하여 비활성화할 수 있습니다. 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 전환 간격만 설정하여 자신만의 슬라이드 쇼를 만들 수 있으며, 이 간격은 슬라이드 전환 사이의 시간(밀리초)을 결정합니다.
[! 참고] 마우스를 캐러셀 콘텐츠 위에 올리거나 키보드 포커스를 캐러셀 콘텐츠로 이동시키면 자동 전환이 일시정지됩니다. 마우스가 회전목마에서 멀어지거나 키보드 포커스가 회전목마 내용에서 벗어날 때 자동 전환이 재개됩니다. 이것은 다음에 설정함으로써 방지할 수 있습니다.
disablePauseOnInteractionproperty를 참.
<IgrCarousel interval={2000} disablePauseOnInteraction={true}> ... </IgrCarousel>
고급 예
루핑이 활성화된 완전 자동화된 캐러셀을 만들어 보겠습니다. 표시기를 각 슬라이드의 썸네일 표현으로 구성합니다.
이 목표를 달성하려면 캐러셀에 대해 다음 구성을 수행해야 합니다.
- 속성을 활성화합니다.
disablePauseOnInteraction - enable the
hideNavigationproperty - 속성을 활성화합니다.
vertical - add transition
interval - add custom
IgrCarouselIndicatorfor each slide
캐러셀은 템플릿에서 다음과 같이 표시됩니다.
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- 스크린 리더가 라이브 영역에 대한 업데이트를 처리해야 하는 우선 순위를 설정하는 데 사용되며, 가능한 설정은 다음과 같습니다.off 및 polite. 기본 설정은 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로 설정됩니다.