MUI (Material-UI) предоставляет гибкие компоненты для отображения
изображений, управления их размерами, адаптивности и стилизации.
Основной компонент для работы с изображениями —
Avatar и
CardMedia, а также интеграция изображений
в контейнеры и компоненты сетки с использованием Box и
Grid.
AvatarAvatar используется для отображения круглых или
квадратных изображений, часто применяемых для профилей
пользователей.
Основные свойства:
src — путь к изображению.alt — альтернативный текст, обязательный для
доступности.variant — форма аватара: circular (по
умолчанию), rounded, square.sx — система стилизации MUI для тонкой настройки
размеров, границ и теней.Пример использования:
import Avatar from '@mui/material/Avatar';
<Avatar
src="/images/user1.jpg"
alt="Профиль пользователя"
variant="rounded"
sx={{ width: 80, height: 80, border: '2px solid #1976d2' }}
/>
Ключевое преимущество Avatar — простая настройка
размеров и формы через sx без необходимости писать
отдельный CSS.
CardMediaCardMedia применяется для отображения изображений внутри
карточек (Card). Он поддерживает как img теги,
так и фоновые изображения через component="div".
Основные свойства:
component — тип HTML-элемента (img,
video, iframe, div).image — путь к изображению (для img или
фона).alt — альтернативный текст для доступности.height и width — размеры изображения.sx — расширенные стили.Пример использования:
import Card from '@mui/material/Card';
import CardMedia from '@mui/material/CardMedia';
import CardContent from '@mui/material/CardContent';
import Typography from '@mui/material/Typography';
<Card sx={{ maxWidth: 345 }}>
<CardMedia
component="img"
height="140"
image="/images/landscape.jpg"
alt="Пейзаж"
/>
<CardContent>
<Typography variant="h6">Заголовок карточки</Typography>
<Typography variant="body2" color="text.secondary">
Описание изображения и контент карточки.
</Typography>
</CardContent>
</Card>
Использование CardMedia позволяет удобно интегрировать
изображения с текстом и другими элементами интерфейса.
Для обеспечения корректного отображения на разных экранах MUI
рекомендует использовать компонент Box с
sx и свойствами maxWidth, height,
objectFit.
Пример адаптивного изображения:
import Box from '@mui/material/Box';
<Box
component="img"
src="/images/responsive.jpg"
alt="Адаптивное изображение"
sx={{
width: '100%',
maxWidth: 600,
height: 'auto',
borderRadius: 2,
boxShadow: 3,
objectFit: 'cover'
}}
/>
Пояснение ключевых параметров:
width: '100%' — изображение занимает всю ширину
контейнера.maxWidth — ограничение максимальной ширины для больших
экранов.height: 'auto' — сохранение пропорций.objectFit: 'cover' — изображение масштабируется без
искажения, обрезая лишнее.borderRadius и boxShadow — добавление
стиля и визуальной глубины.Для сложного дизайна часто применяют фоновые изображения с
Box и CSS свойствами MUI:
<Box
sx={{
width: 300,
height: 200,
backgroundImage: 'url(/images/background.jpg)',
backgroundSize: 'cover',
backgroundPosition: 'center',
borderRadius: 2
}}
/>
backgroundSize: 'cover' и
backgroundPosition: 'center' обеспечивают правильное
масштабирование и позиционирование, сохраняя визуальный баланс
изображения.
Grid)Изображения легко адаптируются к сетке MUI для создания галерей или карточек.
Пример галереи:
import Grid from '@mui/material/Grid';
import Box from '@mui/material/Box';
<Grid container spacing={2}>
{[1, 2, 3, 4].map((item) => (
<Grid item xs={12} sm={6} md={3} key={item}>
<Box
component="img"
src={`/images/photo${item}.jpg`}
alt={`Фото ${item}`}
sx={{ width: '100%', borderRadius: 1, boxShadow: 2 }}
/>
</Grid>
))}
</Grid>
Использование сетки позволяет автоматически адаптировать количество
изображений на строку в зависимости от ширины экрана (xs,
sm, md).
Для повышения производительности рекомендуется использовать
loading="lazy" для изображений:
<Box
component="img"
src="/images/optimized.jpg"
alt="Оптимизированное изображение"
loading="lazy"
sx={{ width: '100%', height: 'auto', borderRadius: 1 }}
/>
loading="lazy" откладывает загрузку изображений до
момента, когда они становятся видимыми в области просмотра, что ускоряет
рендеринг страницы.
MUI позволяет комбинировать изображения с интерактивными эффектами
через sx и псевдоклассы:
<Box
component="img"
src="/images/hover.jpg"
alt="Эффект наведения"
sx={{
width: 250,
height: 150,
borderRadius: 2,
transition: 'transform 0.3s, box-shadow 0.3s',
'&:hover': {
transform: 'scale(1.05)',
boxShadow: 6
}
}}
/>
Плавная анимация при наведении повышает визуальную привлекательность интерфейса без использования дополнительных библиотек.
SVG можно использовать через Box или специализированные
компоненты MUI (SvgIcon), что позволяет изменять цвет,
размер и применять адаптивность без потери качества:
import SvgIcon from '@mui/material/SvgIcon';
<SvgIcon sx={{ fontSize: 60, color: '#1976d2' }}>
<path d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z" />
</SvgIcon>
SVG особенно эффективны для логотипов и иконок интерфейса, обеспечивая четкость на любых устройствах.
Эти инструменты в MUI позволяют работать с изображениями гибко, создавать адаптивный и визуально насыщенный интерфейс, поддерживая производительность и удобство использования.