css 材质-UI对话框字体

x4shl7ld  于 2023-10-21  发布在  其他
关注(0)|答案(3)|浏览(118)

我已经做了一个自定义的用户确认对话框从材质UI对话框组件,如here
我遇到了一个问题,覆盖对话框的字体。我可以覆盖颜色或背景色,但对话框的标题或按钮中的字体是从Material-UI继承的。我成功地覆盖了其他组件中的Material-UI字体,但没有在这部分使用回调:

const UserConfirmation = (
  message: string,
  callback: (shouldNavigate: boolean) => void
) => {
  const container = document.createElement('div')
  container.setAttribute('custom-confirmation-navigation', '')
  document.body.appendChild(container)
  const closeModal = (shouldNavigate: boolean) => {
    ReactDOM.unmountComponentAtNode(container)

    callback(shouldNavigate)
  }
  ReactDOM.render(
    <>
      <Dialog
        fullWidth={true}
        maxWidth="sm"
        open={true}
        aria-labelledby="alert-dialog-title"
        aria-describedby="alert-dialog-description"

      >
        <DialogTitleWrapper
          style={{fontFamily: `BuenosAires !important`, color: `orange`}}
          >
          Discard draft?
        </DialogTitleWrapper>
        <DialogContent>
          <p> {message} </p>
        </DialogContent>
        <DialogActionsWrapper>
          <Button
            onClick={() => closeModal(true)}
            fullWidth={true}
            variant="outlined"
            label="Discard"
          />
          <div style={{ width: '80%' }} />
          <Button
            onClick={() => closeModal(false)}
            fullWidth={true}
            variant="contained"
            label="Cancel"
          />
        </DialogActionsWrapper>
      </Dialog>
    </>,
    container
  )
}
export default UserConfirmation
v2g6jxz6

v2g6jxz61#

感谢Alex
对我来说很有效:
<DialogTitle disableTypography="true">
此外,按钮的标签被固定为:label={<h5 style={{ textTransform: 'none' }}>Cancel</h5>}

ryevplcw

ryevplcw2#

您可以使用classes对象来扩展或扩展应用于组件的样式。这里
创建自定义样式,如下所示

const useStyles = makeStyles({

  customDialogTitle: {
    fontFamily:'Impact'//sans-serif
  }
    });

并分配给classes

<DialogTitle  disableTypography="true"

       classes={{
                 root: classes.customDialogTitle
                }}
    >
    .....
    </DialogTitle>

sample sandbox

goucqfw6

goucqfw63#

现有的答案不再起作用(MUI v5)。
我发现这个问题在谷歌搜索的顶部,所以我更新的情况下有人发现有用的。
您可以使用typography.fontFamily覆盖fontFamily。

const theme = createTheme({
  typography: {
    fontFamily: 'Georgia',
  }
})

如果你使用next/font,你可以传递font.style.fontFamily(感谢讨论中的评论)
我以前使用过inherit,它在屏幕的主体中运行正常,但不是在演示角色中(如在对话框或菜单中)。

import { Inter } from 'next/font/google'
const inter = Inter({ subsets: ['latin'] })

let theme = createTheme({
  typography: {
    fontFamily: inter.style.fontFamily,
  }
})

相关问题