Библиотека Chakra UI предоставляет мощные инструменты для условного отображения компонентов через Show и Hide. Эти компоненты позволяют адаптировать интерфейс под различные размеры экранов без необходимости вручную писать сложные медиазапросы. Они являются обёртками над стандартными React-компонентами и используют внутренний механизм CSS media queries для управления видимостью.
Компонент Show отображает дочерние элементы только при выполнении указанных условий по размеру экрана.
Синтаксис:
<Show below="md">
<Text>Этот текст виден только на малых экранах</Text>
</Show>
Параметры:
above – элемент будет показан на экранах выше
указанного брейкпоинта.below – элемент будет показан на экранах ниже
указанного брейкпоинта.Примеры:
<Show above="lg">
<Button colorScheme="teal">Купить</Button>
</Show>
Здесь кнопка будет видна только на экранах lg и выше.
<Show below="md">
<Text fontSize="sm">Мобильное уведомление</Text>
</Show>
Элемент появится только на экранах md и меньше.
Особенности использования Show:
Box,
Flex, Stack.Компонент Hide действует противоположно Show: скрывает дочерние элементы при указанных условиях.
Синтаксис:
<Hide below="md">
<Text>Этот текст скрыт на малых экранах</Text>
</Hide>
Параметры:
above – элемент будет скрыт на экранах выше указанного
брейкпоинта.below – элемент будет скрыт на экранах ниже указанного
брейкпоинта.Примеры:
<Hide below="sm">
<Image src="/desktop-banner.png" alt="Desktop Banner"/>
</Hide>
Эта картинка будет видна только на экранах sm и выше, исчезая на мобильных.
<Hide above="lg">
<Text fontSize="lg">Специальное предложение для мобильных</Text>
</Hide>
Элемент исчезнет на экранах lg и выше.
Особенности использования Hide:
Chakra UI использует стандартные брейкпоинты, определённые в теме:
sm – 30em (480px)md – 48em (768px)lg – 62em (992px)xl – 80em (1280px)2xl – 96em (1536px)Можно использовать эти брейкпоинты в свойствах Show и Hide для точного управления отображением элементов на разных устройствах.
Иногда требуется более сложная логика адаптивного отображения. Например, элемент виден только на средних экранах:
<Show above="sm" below="lg">
<Text>Только для экранов от sm до lg</Text>
</Show>
Здесь Show поддерживает одновременное указание
above и below, что делает его универсальным
инструментом для медиазапросов в JSX.
<Flex direction={{ base: "column", md: "row" }} align="center" justify="space-between">
<Box>
<Show below="md">
<Text fontSize="sm">Мобильное меню</Text>
</Show>
<Hide below="md">
<Text fontSize="md">Десктопное меню</Text>
</Hide>
</Box>
<Box>
<Button colorScheme="blue">Войти</Button>
</Box>
</Flex>
В этом примере:
Использование компонентов Show и Hide в Chakra UI обеспечивает гибкость адаптивного дизайна, упрощает управление медиазапросами и повышает читаемость кода. Эти инструменты позволяют создавать динамичные интерфейсы, которые автоматически подстраиваются под любые размеры экранов.