如何创建具有透明背景颜色的 MUI 对话框?

IT技术 reactjs material-ui
2021-05-04 20:36:30

我正在尝试使用 MUI 创建加载状态指示器。但我想要对话框的背景颜色,none还想调整高度。但是我无法通过他们提供的样式选项来做到这一点。有什么解决办法吗?

现在看起来像这样..

1

代码如下所示:

<Dialog
  open={true}
  style={{width: '200px', marginLeft: '40%', backgroundColor: 'transparent'}}
  title= 'Loading'
  titleStyle={{paddingTop: '0px', paddingLeft: '45px', fontSize: '15px', lineHeight: '40px'}}
>
    <RefreshIndicator
      style= {{display: 'inline-block'}}
      size={50}
      left={50}
      top={30}
      loadingColor="#FF9800"
      status="loading"    
    />
</Dialog>
4个回答

对于最新版本 ( "@material-ui/core": "^1.2.3"),这是如何完成的:

<Dialog
  {...otherProps}
  PaperProps={{
    style: {
      backgroundColor: 'transparent',
      boxShadow: 'none',
    },
  }}
>
  {/* ... your content ... */}
</Dialog>

注意新PaperPropsprops。它不在文档中,但如果您查看源代码,它们将PaperProps用作您可以传入的props之一 - 由于这不在文档中,但这可能会随着未来的版本而改变,所以在这里要小心。

在材料 v4 或最新版本中。可以使用BackdropProps,看在线演示

您可以在 Dialog 上设置 overlayStyle props以更改背景颜色,如下所示:

 <Dialog
  open={true}
  style={{width: '200px', marginLeft: '40%', backgroundColor: 'transparent'}}
  overlayStyle={{backgroundColor: 'transparent'}}
  title= 'Loading'
  titleStyle={{paddingTop: '0px', paddingLeft: '45px', fontSize: '15px', lineHeight: '40px'}}
  >

您可以直接使用CircularProgresscss 属性,zIndex并且opacity,试试这个:

<CircularProgress size={2} style={Styles.mainLoader}/>

mainLoader: { 
    position: 'absolute',
    paddingTop: '15%',      
    width: '100%',
    height: '100%',
    zIndex: 1000,
    backgroundColor: '#000000',
    opacity: 0.5,
    textAlign: 'center',
}

它将以 0.5 的不透明度和指定的背景覆盖整个屏幕。