Chakra UI предоставляет компоненты и утилиты для гибкого отображения
изображений, что позволяет не только визуально интегрировать графику в
интерфейс, но и оптимизировать её загрузку и производительность
приложения. Основным компонентом для работы с изображениями является
<Image>.
import { Image } from "@chakra-ui/react";
<Image
src="/path/to/image.jpg"
alt="Описание изображения"
boxSize="200px"
objectFit="cover"
/>
<Image>src – путь к изображению. Можно
использовать локальные ресурсы или URL внешнего источника.alt – описание изображения, критично
для доступности и SEO.boxSize – единое свойство для задания
ширины и высоты изображения.objectFit – определяет, как
изображение заполняет контейнер (cover,
contain, fill, none,
scale-down).borderRadius – скругление углов
изображения для создания визуальной мягкости или карточного
дизайна.Для ускорения рендеринга и снижения нагрузки на сеть необходимо
использовать ленивую загрузку изображений. В Chakra UI это реализуется
через стандартный HTML-атрибут loading="lazy":
<Image
src="/path/to/image.jpg"
alt="Пример ленивой загрузки"
loading="lazy"
/>
Это особенно важно для длинных страниц с большим количеством графики: изображения загружаются только тогда, когда становятся видимыми в области просмотра пользователя.
Chakra UI поддерживает адаптивность компонентов через систему responsive props. Для изображений это позволяет подстраивать размер под ширину экрана:
<Image
src="/path/to/image.jpg"
alt="Адаптивное изображение"
boxSize={{ base: "100px", md: "200px", lg: "300px" }}
objectFit="cover"
/>
Здесь base, md и lg
соответствуют стандартным брейкпоинтам Chakra UI, что упрощает создание
гибкого дизайна без медиазапросов в CSS.
chakra.img для расширенной кастомизацииДля тонкой настройки изображения и добавления анимаций или стилей
напрямую можно использовать функцию chakra():
import { chakra, keyframes } from "@chakra-ui/react";
const spin = keyframes`
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
`;
const AnimatedImage = chakra("img", {
baseStyle: {
animation: `${spin} 5s linear infinite`,
borderRadius: "md",
},
});
<AnimatedImage src="/path/to/image.jpg" alt="Анимированное изображение" />
Такой подход позволяет создавать кастомные компоненты с наследованием всех возможностей Chakra UI: responsive props, темы и стили.
Для оптимизации скорости загрузки и уменьшения веса изображений рекомендуется использовать форматы WebP или AVIF. Chakra UI не накладывает ограничений на формат изображения, поэтому можно легко интегрировать внешние инструменты для конвертации и доставки изображений:
<Image src="/images/photo.webp" alt="WebP изображение" />
В сочетании с ленивой загрузкой и адаптивными размерами это снижает потребление трафика и ускоряет рендеринг страницы.
Для создания эффектов наложения, масок или фоновых элементов
изображения помещают в компонент <Box>:
import { Box, Image, Text } from "@chakra-ui/react";
<Box position="relative" width="300px" height="200px">
<Image src="/path/to/image.jpg" alt="Фоновое изображение" boxSize="100%" objectFit="cover" />
<Text
position="absolute"
bottom="4"
left="4"
color="white"
fontWeight="bold"
>
Подпись к изображению
</Text>
</Box>
Такой подход обеспечивает контроль над слоями и позволяет создавать визуально сложные интерфейсы без потери производительности.
Chakra UI позволяет использовать значения из темы для размеров, отступов и скруглений. Это упрощает поддержку единого визуального стиля:
<Image
src="/path/to/image.jpg"
alt="Системные значения темы"
borderRadius="lg"
boxShadow="md"
/>
Использование lg и md соответствует
настройкам темы и упрощает адаптацию под глобальные изменения
дизайна.
Для крупных приложений важна интеграция с CDN и кэширование
изображений. Chakra UI совместим с любыми внешними сервисами, поэтому
src можно указывать как URL CDN. Это уменьшает время
загрузки и повышает отзывчивость интерфейса.
loading="lazy").Эти приёмы в комплексе позволяют создавать лёгкие, быстрые и визуально привлекательные интерфейсы с минимальной нагрузкой на клиентскую часть.