Radix UI предоставляет высокоуровневые, доступные компоненты для React-приложений, которые позволяют создавать интерфейсы с максимальной контролируемостью и гибкостью. Работа с изображениями в контексте Radix UI обычно связана с компонентами, обеспечивающими модальные окна, панели просмотра, тултипы и интерактивные галереи. Важно понимать, что Radix UI не является библиотекой для загрузки или обработки изображений, но предоставляет инструменты для их безопасного и доступного отображения.
AvatarAvatar используется для отображения изображений
пользователей или иконок с возможностью кастомизации размеров, форм и
fallback-элементов. Основные свойства:
src – путь к изображению.alt – альтернативный текст для
доступности.fallback – элемент, отображающийся при
ошибке загрузки изображения.size – размеры аватара (xs, sm, md,
lg, xl).Пример использования:
import * as Avatar from '@radix-ui/react-avatar';
<Avatar.Root>
<Avatar.Image src="/user.png" alt="User avatar" />
<Avatar.Fallback>U</Avatar.Fallback>
</Avatar.Root>
Особенности:
--radix-avatar-size).Dialog для просмотра изображенийDialog позволяет создавать модальные окна, которые
идеально подходят для просмотра изображений в увеличенном виде.
Использование компонентов Radix UI гарантирует доступность через
клавиатуру и корректное управление фокусом.
Пример реализации модального просмотра изображения:
import * as Dialog from '@radix-ui/react-dialog';
<Dialog.Root>
<Dialog.Trigger asChild>
<img src="/thumbnail.png" alt="Thumbnail" className="cursor-pointer" />
</Dialog.Trigger>
<Dialog.Portal>
<Dialog.Overlay className="fixed inset-0 bg-black/50" />
<Dialog.Content className="fixed inset-0 flex items-center justify-center">
<img src="/fullsize.png" alt="Full size" />
<Dialog.Close className="absolute top-4 right-4">X</Dialog.Close>
</Dialog.Content>
</Dialog.Portal>
</Dialog.Root>
Ключевые моменты:
Dialog.Trigger может быть любым элементом, включая
<img>.Dialog.Content можно адаптировать под масштабируемые
изображения, галереи или слайдеры.Dialog.Overlay обеспечивает затемнение фона и улучшает
визуальное восприятие.Tooltip для изображенийTooltip позволяет показывать текстовую подсказку при
наведении на изображение. Важно учитывать доступность: текст в tooltip
должен быть понятен и краток.
import * as Tooltip from '@radix-ui/react-tooltip';
<Tooltip.Root>
<Tooltip.Trigger asChild>
<img src="/icon.png" alt="Icon" />
</Tooltip.Trigger>
<Tooltip.Portal>
<Tooltip.Content side="top" align="center">
Подсказка по иконке
<Tooltip.Arrow />
</Tooltip.Content>
</Tooltip.Portal>
</Tooltip.Root>
Особенности:
side и align.Для создания интерактивных галерей можно комбинировать
Dialog, Avatar и Tooltip. Radix
UI позволяет управлять фокусом и aria-атрибутами для доступности. Пример
структуры галереи:
<div className="grid grid-cols-4 gap-4">
{images.map((image) => (
<Dialog.Root key={image.id}>
<Dialog.Trigger asChild>
<img src={image.thumbnail} alt={image.alt} />
</Dialog.Trigger>
<Dialog.Portal>
<Dialog.Overlay className="fixed inset-0 bg-black/50" />
<Dialog.Content className="fixed inset-0 flex items-center justify-center">
<img src={image.full} alt={image.alt} />
<Dialog.Close className="absolute top-4 right-4">X</Dialog.Close>
</Dialog.Content>
</Dialog.Portal>
</Dialog.Root>
))}
</div>
Важные детали:
map обеспечивает динамическую генерацию
галереи.Dialog.Root, что позволяет
открывать отдельное изображение без конфликтов.Radix UI предоставляет минимальный стиль по умолчанию, позволяя полностью контролировать внешний вид через CSS или Tailwind. Для изображений рекомендуется использовать:
object-fit: cover или contain для
сохранения пропорций.--radix-avatar-size,
--radix-tooltip-content-transform-origin).Эти подходы позволяют создавать интерфейсы с изображениями, которые одновременно доступны, интерактивны и визуально гибки, полностью используя архитектуру Radix UI без сторонних библиотек отображения изображений.