Gallery
Компонент для создания адаптивного слайдера изображений с поддержкой жестов и автоматической прокрутки.
Автопрокрутка
Компонент поддерживает автопрокрутку слайдов. Для этого нужно использовать свойство timeout (в миллисекундах)
отличное от нуля.
Зацикленная галерея
Используйте свойство looped, чтобы список слайдов прокручивался зацикленно.
Кастомизация стрелок навигации
Для кастомизации стрелок навигации используйте следующие свойства:
arrowSize- контролирует размер стрелки;arrowAreaHeight- размер активной зоны стрелок. Определяет область вокруг стрелок, реагирующую на взаимодействие пользователя:stretch- на всю высоту галереиfit- фиксированная высота
showArrows- флаг, определяющий нужно ли показывать стрелки. Видимость стрелок также зависит от параметра адаптивностиhasPointer. Например, на мобильных устройствах стрелки отображаться никогда не будут.
Индикатор прогресса
Для более удобного использования компонента можно включить индикатор прогресса с помощью свойства bullets:
false- значение по умолчанию, индикатор скрыт;light- включает отображение в светлом варианте;dark- включает отображение в светлом варианте.
Контролируемое состояние
Используйте slideIndex и onChange для ручного управления состоянием.
Слайды разных размеров
Если необходимо сделать так, чтобы у каждого слайда была своя ширина, необходимо задать свойство slideWidth="custom":
Параметры анимации
С помощью свойств animationDuration и animationEasing можно изменить такие параметры анимации смены слайдов, как длительность
и функция анимации соответственно. Свойство animationEasing принимает одно из предопределенных значений анимации или позволяет
задать пользовательское значение через массив, элементы которого соответствуют параметрам аналогичной CSS-функции cubic-bezier ↗.
Доступность (a11y)
1. Навигация
- По возможности не оставляйте пользователя без возможности навигации по галерее вручную. Не полагайтесь только на автоматическую прокрутку
- Кастомизируйте подписи кнопок: Задавайте понятные метки через свойства:
arrowPrevLabel = 'Предыдущий слайд'; arrowNextLabel = 'Следующий слайд';
2. Метаданные галереи
Добавьте смысловой ярлык: Используйте aria-label или aria-labelledby с конкретным описанием:
// Плохо
aria-label="Карусель" // роль указывается автоматически через `aria-roledescription="Карусель"`
// Хорошо
aria-label="Фотографии нового смартфона"3. Описание слайдов
Уникальные метки для каждого слайда: Используйте slideLabel с функцией, генерирующей конкретные описания:
// Плохо (нет конкретного обозначения, что на слайде)
slideLabel={({ index, total }) => `Слайд ${index}`}
// Хорошо
slideLabel={({ index, total }) => `Техническая схема (${index + 1} из ${total})`}4. Контент внутри слайдов
Обязательно для изображений: Всегда добавляйте осмысленный alt:
// Плохо (неконкретное описание)
<img src="product.jpg" alt="Картинка" />
// Хорошо
<img src="product.jpg" alt="Смартфон на белом фоне с открытой коробкой" />5. Дополнительные настройки
Кастомизация ролей: При необходимости переопределяйте стандартные описания:
aria-roledescription="Карусель" // Для галереи
slideRoleDescription="Изображение продукта" // Для слайдаСвойства и методы
| Свойство | Описание |
|---|---|
align | AlignTypeПо умолчанию: - |
animationDuration | numberДлительность анимации смены слайда в миллисекундах. По умолчанию: - |
animationEasing | PredefinedEasingType | CubicBezierEasingTypeФункция для анимации. Принимает одно из предопределённых значений или параметры функции cubic-bezier ↗. По умолчанию: - |
arrowAreaHeight | "stretch" | "fit"Размер активной зоны стрелок (в пикселях).
Определяет область вокруг стрелок, реагирующую на взаимодействие пользователя. В дизайне свойство называется По умолчанию: - |
arrowNextLabel | stringТекст для кнопки-стрелки вправо (вперед). Делает ее доступной для ассистивных технологий. По умолчанию: - |
arrowPrevLabel | stringТекст для кнопки-стрелки влево (назад). Делает ее доступной для ассистивных технологий. По умолчанию: - |
arrowSize | "s" | "m"По умолчанию: - |
bullets | false | "dark" | "light"По умолчанию: - |
bulletTestId | ((index: number, active: boolean) => string)Передает атрибут По умолчанию: - |
dragDisabled | booleanПозволяет отключить реагирование на тач-события. По умолчанию: - |
getRef | Ref<HTMLElement>По умолчанию: - |
getRootRef | Ref<HTMLDivElement>По умолчанию: - |
hasPointer | booleanПо умолчанию: - |
initialSlideIndex | numberИндекс слайда по умолчанию. По умолчанию: 0 |
looped | booleanВключает зацикленность слайдов. По умолчанию: - |
nextArrowTestId | stringПередает атрибут По умолчанию: - |
onChange | ((current: number) => void)По умолчанию: - |
onDragEnd | ((e: CustomTouchEvent, targetIndex: number) => void)По умолчанию: - |
onDragStart | CustomTouchEventHandlerПо умолчанию: - |
onNextClick | ((event: MouseEvent<Element, MouseEvent>) => void)Будет вызвано при нажатии на кнопку-стрелку вправо. По умолчанию: - |
onPrevClick | ((event: MouseEvent<Element, MouseEvent>) => void)Будет вызвано при нажатии на кнопку-стрелку влево. По умолчанию: - |
prevArrowTestId | stringПередает атрибут По умолчанию: - |
resizeSource | "window" | "element"Тип источника для отслеживания размера:
По умолчанию: - |
showArrows | booleanПо умолчанию: - |
slideIndex | numberПо умолчанию: - |
slideLabel | string | ((index: number, slidesCount: number) => string)Текст для слайда. Делает его доступным для ассистивных технологий. Может быть функцией.
По умолчанию устанавливает По умолчанию: - |
slideRoleDescription | stringОписание роли для слайда, для лучше понимания пользователей скринридеров. По умолчанию - По умолчанию: - |
slideTestId | ((index: number) => string)Передает атрибут По умолчанию: - |
slideWidth | number | LiteralUnion<"custom", string>Размер слайда. Значение По умолчанию: - |
timeout | numberПри передаче происходит автоматический переход к следующему слайду через переданное время в ms. Автоматический переход будет ставиться на паузу при:
По умолчанию: 0 |