You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为MUI Stack内的多个Box统一设置CSS类或主题样式?

统一为Stack内的Box组件应用样式的几种方法

当然可以,以下是几种实用的实现方式:

方法1:通过Stack的sx属性使用后代选择器

直接在Stack的sx属性中编写CSS后代选择器,精准选中Stack下的所有直接子Box组件:

import Stack from '@mui/material/Stack';
import Box from '@mui/material/Box';

export default function Demo() {
  return (
    <Stack
      sx={{
        '& > Box': {
          padding: 2,
          border: '1px solid #ccc',
          borderRadius: 1,
          backgroundColor: '#f5f5f5',
        },
      }}
    >
      <Box>Box 1</Box>
      <Box>Box 2</Box>
      <Box>Box 3</Box>
    </Stack>
  );
}

注:& > Box选择器仅作用于Stack的直接子元素,不会影响嵌套在Box内部的其他Box组件。

方法2:创建带样式的自定义Stack组件

使用MUI的styled API封装一个预设样式的Stack组件,适合需要重复使用该样式组合的场景:

import { styled } from '@mui/material/styles';
import Stack from '@mui/material/Stack';
import Box from '@mui/material/Box';

const StyledStack = styled(Stack)(({ theme }) => ({
  '& > Box': {
    padding: theme.spacing(2),
    border: `1px solid ${theme.palette.divider}`,
    borderRadius: theme.shape.borderRadius,
    backgroundColor: theme.palette.grey[100],
  },
}));

export default function Demo() {
  return (
    <StyledStack>
      <Box>Box 1</Box>
      <Box>Box 2</Box>
      <Box>Box 3</Box>
    </StyledStack>
  );
}

方法3:创建统一样式的自定义Box组件

如果需要在多个容器(不止当前Stack)中复用相同样式的Box,可以直接封装一个带样式的Box组件:

import { styled } from '@mui/material/styles';
import Box from '@mui/material/Box';
import Stack from '@mui/material/Stack';

const StyledBox = styled(Box)(({ theme }) => ({
  padding: theme.spacing(2),
  border: `1px solid ${theme.palette.divider}`,
  borderRadius: theme.shape.borderRadius,
  backgroundColor: theme.palette.grey[100],
}));

export default function Demo() {
  return (
    <Stack>
      <StyledBox>Box 1</StyledBox>
      <StyledBox>Box 2</StyledBox>
      <StyledBox>Box 3</StyledBox>
    </Stack>
  );
}

内容的提问来源于stack exchange,提问作者user1263981

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 00:27:02