Avatar
Компонент для отображения аватара пользователя — фотографии, инициалов или графики. Наследует все свойства HTML-элемента <img>
.
Основные варианты
Изображение
Основной вариант, использует стандартный <img>
под капотом.
Инициалы
Отображаются, если изображение не удалось загрузить или передано пустое свойство src
.
Рекомендации по использованию инициалов:
- рекомендуемая длина — не более 2 символов;
- размер шрифта автоматически адаптируется под размер аватара.
Градиентный фон
Помимо стандартного фона инициалы можно размещать на градиентном фоне. Всего поддерживается 6 видов разных градиентов.
При необходимости можно использовать кастомный градиент (с помощью className
/style
):
<Avatar gradientColor="custom" style={{ backgroundImage: 'linear-gradient(...)' }} />
Размеры
Дополнительные элементы
Бейдж
Готовый пресет бейджа
Подкомпонент Avatar.BadgeWithPreset
предоставляет готовые пресеты Avatar.Badge
.
При передаче в свойство preset
значения online
используется иконка Icon12Circle
,
а при значении online-mobile
иконка Icon12OnlineMobile
.
Иконка-заглушка
На случай, если картинка не смогла загрузиться, будет отображаться иконка-заглушка. Размер иконки-заглушки должен зависеть от размеров аватара.
Наложение
Вспомогательные функции
calcInitialsAvatarColor
Для динамического определения градиента под пользователя используйте функцию calcInitialsAvatarColor
.
Она генерирует значение градиента по формуле user_id % 6 + 1
.
Например, у пользователя с user_id={106}
будет 5-й ("l-blue"
) цвет градиента.
import { calcInitialsAvatarColor } from '@vkontakte/vkui';
// userId определён где-то выше
<Avatar initials="ВК" gradientColor={calcInitialsAvatarColor(userId)} />;
Особенности
Компонент поддерживает следующие возможности:
- автоматическая адаптация размера шрифта для инициалов;
- поддержка всех стандартных HTML-атрибутов
<img>
; - сохранение пропорций изображения при изменении размеров.
Свойства и методы
Avatar
Свойство | Описание |
---|---|
elementTiming | string Смотри https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/elementtiming ↗. По умолчанию: - |
fallbackIcon | ReactElement<ImageBaseExpectedIconProps, string | JSXElementConstructor<any>> Фолбек на случай, если картинка не прогрузилась. По умолчанию: - |
filter | Filter Пользовательское значения стиля filter Подробнее можно почитать в документации ↗. По умолчанию: - |
getRef | Ref<HTMLImageElement> По умолчанию: - |
getRootRef | Ref<HTMLDivElement> По умолчанию: - |
gradientColor | 1 | 2 | 3 | 4 | 5 | 6 | InitialsAvatarTextGradients | "custom" Задаёт градиент для фона. Если передано число, то оно будет сконвертировано в строчное представление цвета по следующей схеме: 1: ‘red’ 2: ‘orange’ 3: ‘yellow’ 4: ‘green’ 5: ‘l-blue’ 6: ‘violet’. По умолчанию: - |
initials | string Инициалы пользователя. По умолчанию: - |
keepAspectRatio | boolean Флаг для сохранения пропорций картинки. Для корректной работы необходимо задать размеры хотя бы одной стороны картинки. По умолчанию: - |
noBorder | boolean Отключает обводку. По умолчанию: - |
objectFit | ObjectFit Пользовательское значения стиля object-fit Подробнее можно почитать в документации ↗. По умолчанию: - |
objectPosition | ObjectPosition<string | number> Пользовательское значения стиля object-position Подробнее можно почитать в документации ↗. По умолчанию: - |
size | LiteralUnion<16 | 20 | 24 | 28 | 32 | 36 | 40 | 44 | 48 | 56 | 64 | 72 | 80 | 88 | 96, number> Задаёт размер картинки. Используйте размеры заданные дизайн-системой По умолчанию: 48 |
withTransparentBackground | boolean Отключает фон, заданный по умолчанию. Полезен для отображения картинок с прозрачностью. По умолчанию: - |
Avatar.Badge
Свойство | Описание |
---|---|
background | "stroke" | "shadow" Вид подложки под иконку.
По умолчанию: - |
children | ReactElement<ImageBaseExpectedIconProps, string | JSXElementConstructor<any>> Принимает иконку. По умолчанию: - |
getRootRef | Ref<HTMLDivElement> По умолчанию: - |
Avatar.BadgeWithPreset
Свойство | Описание |
---|---|
getRootRef | Ref<HTMLDivElement> По умолчанию: - |
preset | "online" | "online-mobile" Использует предзаданные настройки. За каждым пресетом закреплена своя иконка и стили. По умолчанию: online |
Avatar.Overlay
Свойство | Описание |
---|---|
children | ReactNode | ReactElement<ImageBaseExpectedIconProps, string | JSXElementConstructor<any>> Принимает иконку. По умолчанию: - |
className | string
По умолчанию: - |
getRootRef | Ref<HTMLDivElement> По умолчанию: - |
onClick | MouseEventHandler<HTMLElement> Обработчик взаимодействия с элементом.
По умолчанию сам компонент является интерактивным элементом. Передав значение равное По умолчанию: - |
theme | "dark" | "light" Задаёт тему оформления. По умолчанию: - |
visibility | "on-hover" | "always" Определяет каким образом должен показываться оверлей.
По умолчанию: - |