Backdrop — это компонент библиотеки MUI (Material-UI), который используется для создания затемнённого или полупрозрачного фона поверх интерфейса, обычно для привлечения внимания к модальному контенту или блокировки взаимодействия с основной страницей. Он часто применяется вместе с Modal, Drawer или Dialog, но может использоваться и самостоятельно.
Для начала нужно импортировать компонент:
import Backdrop from '@mui/material/Backdrop';
import CircularProgress from '@mui/material/CircularProgress';
import { useState } from 'react';
Простейший пример:
function SimpleBackdrop() {
const [open, setOpen] = useState(false);
const handleToggle = () => {
setOpen(!open);
};
return (
);
}
Ключевые моменты:
Backdrop поддерживает несколько важных свойств, которые обеспечивают гибкость использования:
open (boolean) Определяет, видим ли
Backdrop. Без установки в true компонент не
отображается.
invisible (boolean) Делает фон полностью прозрачным, оставляя функциональность блокировки кликов. Полезно для ситуаций, когда нужно блокировать взаимодействие с интерфейсом без визуального затемнения.
Контент
sx / style Позволяет кастомизировать внешний вид
с помощью MUI sx или стандартного style.
Например, можно изменить прозрачность или цвет фона:
Загрузка...
transitionDuration (number | { enter, exit
}) Настройка времени анимации появления и скрытия. Можно указать
отдельные значения для enter и exit:
Контент
onClick Используется для закрытия или других действий при клике на фон.
Backdrop часто применяется совместно с модальными окнами. В MUI Modal автоматически использует Backdrop, но его можно настроить или заменить.
Пример с Modal:
import Modal from '@mui/material/Modal';
function ModalWithBackdrop() {
const [open, setOpen] = useState(false);
const handleOpen = () => setOpen(true);
const handleClose = () => setOpen(false);
return (
Контент модального окна
);
}
Особенности интеграции:
BackdropProps позволяет полностью управлять стилем и
поведением Backdrop внутри модальных компонентов.transitionDuration синхронизирует анимацию
Backdrop с анимацией модального окна.Компонент Backdrop имеет высокий z-index по умолчанию,
чтобы перекрывать все элементы страницы. В MUI это значение задаётся
через theme.zIndex.backdrop, что позволяет гибко
управлять порядком отображения слоёв в масштабных интерфейсах.
Пример кастомного z-index:
Загрузка...
invisible полезен для случаев, когда нужно
заблокировать пользовательский ввод, но не затемнять интерфейс.onClick можно создать поведение, при
котором Backdrop служит только для перехвата кликов вне активного
контента.
sx предпочтительнее style
при работе с MUI, так как позволяет использовать тему и динамические
значения.