Chakra UI предоставляет мощные и гибкие средства для работы с тенями
элементов интерфейса. Система тени (shadows) в Chakra
UI основана на предопределённых стилях, которые можно легко расширять и
настраивать под потребности проекта. Тени применяются через свойство
boxShadow, которое доступно почти для всех компонентов.
Chakra UI использует несколько категорий теней:
sm, md, lg, xl — стандартные предустановленные размеры:
sm — маленькая тень, подходит для лёгких элементов,
таких как кнопки и карточки.md — средняя тень, чаще всего применяется для карточек
и контейнеров.lg — крупная тень, создаёт более выраженный эффект
подъёма.xl — максимальная тень, используется для модальных окон
и всплывающих элементов.Пример использования:
<Box boxShadow="md" p={5} rounded="md" bg="white">
Средняя тень
</Box>
<Input placeholder="Введите текст" boxShadow="outline" />
<Box boxShadow="inner" p={5} bg="gray.100">
Внутренняя тень
</Box>
Chakra UI позволяет создавать собственные стили теней через тему. В
файле theme.js можно добавить новые значения в объект
shadows:
import { extendTheme } from "@chakra-ui/react";
const theme = extendTheme({
shadows: {
customLight: "0 2px 8px rgba(0, 0, 0, 0.1)",
customDark: "0 4px 16px rgba(0, 0, 0, 0.3)"
}
});
export default theme;
После этого новые тени доступны через boxShadow:
<Box boxShadow="customLight" p={5} bg="white">
Светлая кастомная тень
</Box>
Тени можно динамически изменять в зависимости от цветовой схемы приложения. Chakra UI поддерживает тёмную и светлую тему, что позволяет автоматически менять интенсивность тени:
import { useColorModeValue } from "@chakra-ui/react";
const shadow = useColorModeValue("sm", "lg");
<Box boxShadow={shadow} p={5} bg="white">
Тень адаптивная к теме
</Box>
Некоторые компоненты Chakra UI имеют предустановленные тени:
boxShadow или наследовать из темы.boxShadow.Пример:
<ModalContent boxShadow="xl">
<ModalHeader>Заголовок</ModalHeader>
<ModalBody>Содержимое модального окна</ModalBody>
</ModalContent>
Chakra UI позволяет комбинировать несколько теней через строку, разделённую запятыми:
<Box boxShadow="0 2px 4px rgba(0,0,0,0.1), 0 4px 8px rgba(0,0,0,0.2)" p={5} bg="white">
Комбинированная тень
</Box>
Это даёт возможность создавать сложные эффекты подъёма и глубины, которые визуально приближаются к дизайнам из Figma или Sketch.
Для плавного изменения теней при наведении удобно использовать
transition:
<Box
boxShadow="md"
_hover={{ boxShadow: "xl" }}
transition="box-shadow 0.3s ease"
p={5}
bg="white"
>
Hover эффект с тенью
</Box>
Тени в Chakra UI — это не только декоративный элемент, но и инструмент создания визуальной иерархии и интерактивности интерфейса. Комбинирование предустановленных и кастомных теней, использование адаптации к цветовой теме и плавных переходов позволяет создавать современные и профессиональные UI.