Библиотека MUI предоставляет гибкий и мощный инструмент для
построения интерфейсов с использованием карточек (Card).
Сложные лайауты карточек позволяют создавать интерактивные и визуально
привлекательные элементы, которые могут содержать изображения, тексты,
кнопки, списки и другие вложенные компоненты.
Карточка в MUI состоит из нескольких основных компонентов:
Card — контейнер, который задает базовую рамку и
тень.CardContent — область для текстового контента.CardMedia — область для отображения изображений.CardActions — область для кнопок и действий.CardHeader — заголовок и аватар для карточки.Пример базовой структуры:
import Card from '@mui/material/Card';
import CardHeader from '@mui/material/CardHeader';
import CardMedia from '@mui/material/CardMedia';
import CardContent from '@mui/material/CardContent';
import CardActions from '@mui/material/CardActions';
import Button from '@mui/material/Button';
import Typography from '@mui/material/Typography';
Основной текст карточки с описанием.
Для построения сложных макетов карточек MUI рекомендует использовать
Grid или систему Box с Flexbox. Это позволяет
создавать адаптивные и многоуровневые структуры.
Пример двухколоночного лайаута карточек:
import Grid from '@mui/material/Grid';
import Box from '@mui/material/Box';
Первая карточка
Вторая карточка
Использование Flexbox для вложенных карточек:
Карточка 1
Карточка 2
Карточка 3
flex: '1 1 300px' — позволяет карточкам гибко
растягиваться, но не быть меньше 300px.gap={2} — задает отступы между карточками без
использования внешних margin.Карточки часто содержат несколько типов информации: аватар, заголовок, теги, рейтинг, кнопки и изображения. MUI позволяет объединять эти элементы в одну структуру, используя комбинации компонентов.
Пример карточки с аватаром, рейтингом и кнопками:
import Avatar from '@mui/material/Avatar';
import IconButton from '@mui/material/IconButton';
import FavoriteIcon from '@mui/icons-material/Favorite';
import StarIcon from '@mui/icons-material/Star';
}
title="Название карточки"
subheader="Дата публикации"
/>
Подробное описание карточки, включая текст и возможные списки.
Для сложных интерфейсов важно, чтобы карточки корректно отображались
на разных устройствах. MUI позволяет использовать
breakpoints для настройки поведения карточек.
Содержимое карточки
xs — ширина для мобильных устройств.sm и md — для планшетов и десктопов.styled и sx для кастомизацииMUI предоставляет два подхода для кастомного оформления карточек:
sx — быстрые инлайновые стили.styled — создание переиспользуемых
компонентов с индивидуальным стилем.Пример с sx:
Контент карточки
Пример с styled:
import { styled } from '@mui/material/styles';
import Card from '@mui/material/Card';
const CustomCard = styled(Card)(({ theme }) => ({
borderRadius: theme.spacing(2),
boxShadow: theme.shadows[5],
transition: 'transform 0.2s',
'&:hover': {
transform: 'scale(1.05)',
},
}));
Для создания сложных асимметричных лайаутов карточек MUI
предоставляет компонент Masonry:
import Masonry from '@mui/lab/Masonry';
Карточка 1
Карточка 2
Карточка 3
Карточка 4
columns задает количество колонок на разных
разрешениях.spacing — промежуток между карточками.CardMedia с оптимизированными
изображениями.React.memo или useMemo для
карточек, которые часто рендерятся.