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

如何移除Material UI Accordion组件上方的默认灰色线条?

解决Material UI Accordion上方灰色线条的问题

嘿,我来帮你搞定这个烦恼!你遇到的灰色线条其实是Material UI Accordion组件默认自带的分割线(通过:before伪元素实现),同时组件默认也有边框样式,咱们可以通过几种方式轻松移除它,还能确保背景是纯白色:

方法一:内联sx样式快速解决

直接在Accordion组件上用sx属性覆盖默认样式,适合单个组件的场景:

import Accordion from '@mui/material/Accordion';
import AccordionSummary from '@mui/material/AccordionSummary';
import AccordionDetails from '@mui/material/AccordionDetails';
import Typography from '@mui/material/Typography';

export default function BasicAccordion() {
  return (
    <Accordion 
      sx={{ 
        backgroundColor: 'white', // 明确设置白色背景
        border: 'none', // 移除默认边框
        '&:before': {
          display: 'none' // 移除默认的伪元素分割线
        } 
      }}
    >
      <AccordionSummary aria-controls="panel1-content" id="panel1-header">
        <Typography>Accordion 1</Typography>
      </AccordionSummary>
      <AccordionDetails>
        <Typography>
          Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse
          malesuada lacus ex, sit amet blandit leo lobortis eget.
        </Typography>
      </AccordionDetails>
    </Accordion>
  );
}

方法二:用styled组件自定义可复用的Accordion

如果你的项目里多个地方都要用到无线条的Accordion,用styled组件封装一下更方便:

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

// 自定义无线条的Accordion组件
const WhiteAccordion = styled(Accordion)(({ theme }) => ({
  backgroundColor: 'white',
  border: 'none',
  '&:before': {
    display: 'none',
  },
  // 还可以添加hover等状态的样式,比如hover时也不要边框
  '&:hover': {
    boxShadow: 'none',
  },
}));

// 使用的时候直接调用自定义组件
export default function CustomAccordionDemo() {
  return (
    <WhiteAccordion>
      <AccordionSummary aria-controls="panel2-content" id="panel2-header">
        <Typography>Custom Accordion</Typography>
      </AccordionSummary>
      <AccordionDetails>
        <Typography>
          这个Accordion已经去掉了上方的灰色线条,背景也是纯白色哦!
        </Typography>
      </AccordionDetails>
    </WhiteAccordion>
  );
}

方法三:修改全局主题(适合全项目统一配置)

如果你希望整个项目的所有Accordion都默认去掉这条线条,直接修改Material UI的全局主题就可以:

import { createTheme, ThemeProvider } from '@mui/material/styles';
import Accordion from '@mui/material/Accordion';
import AccordionSummary from '@mui/material/AccordionSummary';
import AccordionDetails from '@mui/material/AccordionDetails';
import Typography from '@mui/material/Typography';

// 创建自定义主题
const theme = createTheme({
  components: {
    MuiAccordion: {
      styleOverrides: {
        root: {
          backgroundColor: 'white',
          border: 'none',
          '&:before': {
            display: 'none',
          },
        },
      },
    },
  },
});

export default function ThemedAccordion() {
  return (
    <ThemeProvider theme={theme}>
      <Accordion>
        <AccordionSummary aria-controls="panel3-content" id="panel3-header">
          <Typography>Themed Accordion</Typography>
        </AccordionSummary>
        <AccordionDetails>
          <Typography>
            现在项目里所有的Accordion都会默认是白色背景,没有上方的灰色线条啦!
          </Typography>
        </AccordionDetails>
      </Accordion>
    </ThemeProvider>
  );
}

以上三种方法都能解决你的问题,根据自己的使用场景选就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 21:02:37