Box Container Grid Stack 这几种在react项目编译后会变成什么html原生元素?
Box Container Grid Stack 这几种在react项目编译后会变成什么html原生元素?
eeeeeeeeeeeeeeeeeeeeeeeee
✅ 在 React 项目中,Box
、Container
、Grid
和 Stack
编译后的 HTML 原生元素
🚀 1️⃣ Box
📌 React 代码
import Box from '@mui/material/Box';
<Box sx={{ p: 2, bgcolor: 'lightblue' }}>
这是一个 Box
</Box>
📌 编译后的 HTML
<div class="MuiBox-root css-xxxxxx" style="padding: 16px; background-color: lightblue;">
这是一个 Box
</div>
✅ 解析
Box
编译成原生的<div>
元素。- 类名包含
MuiBox-root
和自动生成的 CSS 类(如css-xxxxxx
)。 - 样式通过
style
属性或 CSS 类应用。
🚀 2️⃣ Container
📌 React 代码
import Container from '@mui/material/Container';
<Container maxWidth="md" sx={{ bgcolor: 'lightgreen', p: 3 }}>
这是一个 Container
</Container>
📌 编译后的 HTML
<div class="MuiContainer-root MuiContainer-maxWidthMd css-xxxxxx" style="background-color: lightgreen; padding: 24px;">
这是一个 Container
</div>
✅ 解析
Container
也编译成原生的<div>
元素。- 类名:
MuiContainer-root
→ 基础样式。MuiContainer-maxWidthMd
→ 限制最大宽度为md
。- 自定义样式类:
css-xxxxxx
。
- 样式:
- 应用到
style
属性或 CSS 类。
- 应用到
🚀 3️⃣ Grid
📌 React 代码
import Grid from '@mui/material/Grid';
<Grid container spacing={2}>
<Grid item xs={6}>左</Grid>
<Grid item xs={6}>右</Grid>
</Grid>
📌 编译后的 HTML
<div class="MuiGrid-root MuiGrid-container css-xxxxxx">
<div class="MuiGrid-root MuiGrid-item MuiGrid-grid-xs-6 css-yyyyyy">左</div>
<div class="MuiGrid-root MuiGrid-item MuiGrid-grid-xs-6 css-yyyyyy">右</div>
</div>
✅ 解析
Grid container
→ 编译成<div>
元素,带有容器样式:MuiGrid-root
→ 基础样式。MuiGrid-container
→ 容器样式。
Grid item
→ 编译成<div>
元素,带有栅格样式:MuiGrid-item
→ 栅格项。MuiGrid-grid-xs-6
→ 宽度占 6 列(总共 12 列)。
- 样式:
- 类名自动生成。
css-xxxxxx
和css-yyyyyy
分别为不同的类名。
🚀 4️⃣ Stack
📌 React 代码
import Stack from '@mui/material/Stack';
<Stack spacing={2} direction="row" sx={{ bgcolor: 'lightcoral', p: 2 }}>
<div>Item 1</div>
<div>Item 2</div>
</Stack>
📌 编译后的 HTML
<div class="MuiStack-root css-xxxxxx" style="background-color: lightcoral; padding: 16px; display: flex; gap: 16px; flex-direction: row;">
<div>Item 1</div>
<div>Item 2</div>
</div>
✅ 解析
Stack
→ 编译成<div>
元素。- 样式:
MuiStack-root
→ 基础样式。css-xxxxxx
→ 自动生成的 CSS 类。
- 样式属性:
display: flex
→ 默认使用flex
布局。gap: 16px
→ 间距。flex-direction: row
→ 横向排列。
✅ 总结对比
MUI 组件 | 编译后的 HTML 元素 | 样式类名 | 特性 |
---|---|---|---|
Box |
<div> |
MuiBox-root |
通用容器,无布局特性 |
Container |
<div> |
MuiContainer-root |
带有最大宽度限制 |
Grid |
<div> |
MuiGrid-root |
带有栅格布局特性 |
Stack |
<div> |
MuiStack-root |
默认使用 flex 布局 |
🚀 ✅ 最佳实践
- 页面整体结构:使用
Container
控制最大宽度。 - 栅格布局:使用
Grid
,适合响应式网格。 - 堆叠布局:使用
Stack
,简化flex
布局。 - 自定义容器:使用
Box
,灵活性最高,适合包装组件或自定义样式。
🔥 如果你只想要简单的容器或自定义样式,推荐使用 Box
。
🔥 如果需要网格或布局管理,使用 Grid
和 Stack
效果更好。