Material-UI is a user interface library that provides predefined and customizable React components for faster and easy web development, these Material-UI components are based on top of Material Design by Google. In this article, we will discuss the z-index in the Material-UI library.
To control the layout we use a z-index which gives a third axis to arrange content. z-index CSS property in Material-UI is designed to layer drawers, modals, snackbars, tooltips, etc in a proper way.
Syntax:
<Box sx={{ zIndex: 'tooltip' }}>
Here Box can be any other component.
These are the default values set in mui in z-index:
- mobile stepper: 1000
- fab: 1050
- speed dial: 1050
- app bar: 1100
- drawer: 1200
- modal: 1300
- snackbar: 1400
- tooltip: 1500
These default values can be changed but it is not recommended. If you change one, you have to change them all.
Installing React App:
Step 1: Create a React app using the following command.
npx create-react-app example_zindex
Step 2: Now get into the project directory
cd example_zindex
Installing Material-UI: Installing Material-UI’s source files via npm/yarn, and they take care of injecting the CSS needed.
npm install @material-ui/core OR yarn add @material-ui/core
Project Structure: It will look like the following.
project structure
Example 1: In this example, we will see the basic example which explains how components will render based on their z-Index value.
Javascript
import * as React from 'react'; import Typography from '@mui/material/Typography'; import Box from '@mui/material/Box';   function App() {     return (         <Typography             component="div"            variant="body1"            style={{                   height: 100,                 width: '300px',                 border: '1px solid grey',                 position: 'relative',             }}         >             <Box                 sx={{                     bgcolor: (theme) =>                         theme.palette.mode === 'dark' ?                             '#101010' : 'grey.600',                     color: (theme) =>                         (theme.palette.mode === 'dark' ?                         'grey.300' : 'grey.50'),                     border: '1px solid',                     borderColor: (theme) =>                         theme.palette.mode === 'dark' ?                         'grey.800' : 'grey.300',                     p: 2,                     borderRadius: 2,                     fontSize: '0.875rem',                     fontWeight: '700',                     position: 'absolute',                     top: 40,                     left: '40%',                     zIndex: 'tooltip', //tooltip:1500                 }}             >                 I am Upper side             </Box>             <Box                 sx={{                     bgcolor: (theme) => (theme.palette.mode ===                         'dark' ? 'grey.800' : '#fff'),                     color: (theme) =>                         theme.palette.mode === 'dark' ?                         'grey.300' : 'grey.800',                     border: '1px solid',                     borderColor: (theme) =>                         theme.palette.mode === 'dark' ?                         'grey.800' : 'grey.300',                     p: 2,                     borderRadius: 2,                     fontSize: '0.875rem',                     fontWeight: '700',                     position: 'absolute',                     top: 0,                     left: '43%',                     zIndex: 'modal', //modal:1300                 }}             >                 I am Lower side             </Box>         </Typography>     ) }   export default App; |
Output:
Â
Example 2: In this example, we will see examples of all the default values of the z-index.
Javascript
import * as React from 'react'; import Box from "@mui/material/Box";     function App() {     return (         <>             <Box                 sx={{                     bgcolor: "pink",                     color: "grey",                     border: "1px solid",                     width: "100%",                     borderColor: "black",                     p: 2,                     borderRadius: 2,                     fontSize: "0.875rem",                     fontWeight: "700",                     position: "absolute",                     top: 0,                       left: "0%",                     zIndex: "mobileStepper",                 }}             >                 z-index mobile stepper             </Box>             <Box                 sx={{                     bgcolor: "black",                     color: "white",                     border: "1px solid",                     width: "100%",                     borderColor: "black",                     p: 2,                     borderRadius: 2,                     fontSize: "0.875rem",                     fontWeight: "700",                     position: "absolute",                     top: 5,                     left: "13%",                     zIndex: "fab",                 }}             >                 z-index fab             </Box>             <Box                 sx={{                     bgcolor: "blue",                     color: "white",                     width: "100%",                     border: "1px solid",                     borderColor: "black",                     p: 2,                     borderRadius: 2,                     fontSize: "0.875rem",                     fontWeight: "700",                     position: "absolute",                     top: 10,                     left: "20%",                     zIndex: "speedDial",                 }}             >                 z-index speed dial             </Box>             <Box                 sx={{                     bgcolor: "orange",                     color: "blue",                     width: "100%",                     border: "1px solid",                     borderColor: "black",                     p: 2,                     borderRadius: 2,                     fontSize: "0.875rem",                     fontWeight: "700",                     position: "absolute",                     top: 15,                     left: "30%",                     zIndex: "appBar",                 }}             >                 z-index app bar             </Box>             <Box                 sx={{                     bgcolor: "pink",                     color: "blue",                     width: "100%",                     border: "1px solid",                     borderColor: "black",                     p: 2,                     borderRadius: 2,                     fontSize: "0.875rem",                     fontWeight: "700",                     position: "absolute",                     top: 20,                     left: "41%",                     zIndex: "drawer",                 }}             >                 z-index drawer             </Box>             <Box                 sx={{                     bgcolor: "red",                     color: "blue",                     width: "100%",                     border: "1px solid",                     borderColor: "black",                     p: 2,                     borderRadius: 2,                     fontSize: "0.875rem",                     fontWeight: "700",                     position: "absolute",                     top: 25,                     left: "52%",                     zIndex: "modal",                 }}             >                 z-index modal             </Box>             <Box                 sx={{                     bgcolor: "red",                     color: "blue",                     width: "100%",                     border: "1px solid",                     borderColor: "black",                     p: 2,                     borderRadius: 2,                     fontSize: "0.875rem",                     fontWeight: "700",                     position: "absolute",                     top: 25,                     left: "52%",                     zIndex: "modal",                 }}             >                 z-index modal             </Box>             <Box                 sx={{                     bgcolor: "blue",                     color: "white",                     width: "100%",                     border: "1px solid",                     borderColor: "black",                     p: 2,                     borderRadius: 2,                     fontSize: "0.875rem",                     fontWeight: "700",                     position: "absolute",                     top: 30,                     left: "63%",                     zIndex: "snackbar",                 }}             >                 z-index snackbar             </Box>             <Box                 sx={{                     bgcolor: "green",                     color: "white",                     width: "100%",                     border: "1px solid",                     borderColor: "black",                     p: 2,                     borderRadius: 2,                     fontSize: "0.875rem",                     fontWeight: "700",                     position: "absolute",                     top: 35,                     left: "75%",                     zIndex: "tooltip",                 }}             >                 z-index tooltip             </Box>         </>       ); }   export default App; |
Output:
Â
Reference: https://mui.com/material-ui/customization/z-index/
