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

如何修改Material UI中Popover的宽高?样式设置无效求助

解决Material UI Popover宽高设置无效的问题

我来帮你搞定这个问题!你遇到的问题主要有两个关键点:

  • 你把样式对象直接传给了className属性,但className应该接收类名字符串,不是样式对象;
  • Material UI的Popover本身只是一个定位容器,实际的内容区域是由它内部的Paper组件渲染的,所以直接给Popover设置宽高不会生效。

下面是几种可行的解决方案,你可以根据自己的项目情况选择:

方法1:通过PaperProps传递样式(推荐)

这是最直接的方式,通过PaperProps把样式传递给Popover内部的Paper组件:

<Popover
  open={open}
  anchorEl={anchorEl}
  // 重点:用PaperProps给内部Paper设置样式
  PaperProps={{
    sx: {
      width: '250px',
      height: '300px',
      // 还可以添加其他样式,比如背景、圆角等
      borderRadius: 2,
      backgroundColor: '#fff'
    }
  }}
  anchorOrigin={{ vertical: 'top', horizontal: 'left' }}
  transformOrigin={{ vertical: 'top', horizontal: 'right' }}
  disableRestoreFocus
>
  {/* 这里放你的Popover内容 */}
  <div>Popover内容示例</div>
</Popover>

方法2:使用sx的嵌套选择器

如果你想直接给Popover组件加样式,可以用sx的嵌套选择器选中内部的Paper:

<Popover
  open={open}
  anchorEl={anchorEl}
  sx={{
    '& .MuiPaper-root': {
      width: '250px',
      height: '300px'
    }
  }}
  anchorOrigin={{ vertical: 'top', horizontal: 'left' }}
  transformOrigin={{ vertical: 'top', horizontal: 'right' }}
  disableRestoreFocus
>
  {/* Popover内容 */}
</Popover>

方法3:用styled组件定制(适合需要复用的场景)

如果这个定制后的Popover需要在多个地方使用,可以用styled组件封装:

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

const StyledPopover = styled(Popover)`
  & .MuiPaper-root {
    width: 250px;
    height: 300px;
  }
`;

// 使用的时候
<StyledPopover
  open={open}
  anchorEl={anchorEl}
  anchorOrigin={{ vertical: 'top', horizontal: 'left' }}
  transformOrigin={{ vertical: 'top', horizontal: 'right' }}
  disableRestoreFocus
>
  {/* Popover内容 */}
</StyledPopover>

补充说明

  • 如果你用的是Material UI v4版本,需要用makeStyles代替sx:
    import { makeStyles } from '@mui/styles';
    
    const useStyles = makeStyles({
      popoverPaper: {
        width: '250px',
        height: '300px'
      }
    });
    
    // 组件内使用
    const classes = useStyles();
    
    <Popover
      open={open}
      anchorEl={anchorEl}
      PaperProps={{ className: classes.popoverPaper }}
      // 其他属性...
    >
      {/* 内容 */}
    </Popover>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:07:38