Обзор
Стили PageControl задаются размерами точек, зависящими от размера компонента, и токенами фона элементов. PageControlProgress расширяет ту же модель точек анимацией ширины.
Публичные CSS-переменные
| Переменная | Значение | Влияет на |
|---|---|---|
| базовый размер точкиэлементы и прогресс | В этом состоянии изменений не видно | |
| фон по умолчаниюэлементы и прогресс | В этом состоянии изменений не видно | |
| состояние наведенияэлементы | В этом состоянии изменений не видно | |
| активное состояниеэлементы и прогресс | В этом состоянии изменений не видно | |
| длительность анимацииэлемент прогресса | В этом состоянии изменений не видно | |
| контур фокусаэлементы | В этом состоянии изменений не видно |
Переменные частей
Корень
Корень задаёт раскладку в строку, промежуток и touch-action: none.
Элемент
PageControlItem переводит размер в размеры круглой точки и задаёт активный фон.
Элемент прогресса
PageControlProgress расширяется в ширину в активном состоянии и анимирует заливку через псевдоэлемент ::after.
Взаимодействие состояний и вариантов
- размер управляет диаметром точки
- активное состояние меняет базовый фон
- элементы прогресса используют
--durationдля управления анимацией заливки
Примеры
Крупный индикатор страниц
large-page-control.tsx · 11 строк
import { PageControl, PageControlItem } from '@vega-ui/react';
export default function LargePageControl() {
return (
<PageControl size='lg' defaultActive={0} aria-label='Onboarding screens'>
<PageControlItem index={0} aria-label='Welcome' />
<PageControlItem index={1} aria-label='Connect your calendar' />
<PageControlItem index={2} aria-label='Invite your team' />
</PageControl>
);
}Чего не переопределять
- не убирайте видимость фокуса у элементов
- не используйте анимацию ширины прогресса, если продукт на самом деле не продвигается со временем