如何在 React 中调整 Material-UI Tooltip 字体大小

Fer*_*rma 4 javascript css tooltip reactjs material-ui

我用 material-ui 实​​现了一个工具提示,但字体太小了。我不能用 .scss 改变它。

import React from "react";
import "./InfoTooltip.scss";
import InfoIcon from '@material-ui/icons/Info';
import Tooltip from '@material-ui/core/Tooltip';

const InfoTooltip: React.FC<{ children?: any }> = ({ children }) => {
  const [label, ...rest] = children;
  return (
    <div className="info-tooltip-container">
      <div className="label-container">
        <Tooltip title={label}>
          <InfoIcon style={{ fontSize: '24px' }} />
        </Tooltip>
      </div>
      {rest}
    </div>
  );
};

export default InfoTooltip;
Run Code Online (Sandbox Code Playgroud)
.info-tooltip-container {
  .label-container {
    font-size: 18px;
  }
  label {
    font-size: 18px;
  }
}
Run Code Online (Sandbox Code Playgroud)

https://material-ui.com/es/components/tooltips/#tooltip

kei*_*kai 15

您可以直接在 props title 中添加自定义组件。

如果需要,您可以inline-styles向刚刚添加的组件添加任何内容。

包括 font-size

<Tooltip title={<h1 style={{ color: "lightblue" }}>title</h1>}>
  <InfoIcon />
</Tooltip>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


参考:MUI 工具提示文档:customized-tooltips


Luc*_*oli 15

您可以在全局级别组件级别执行此操作。

全球水平

这样Tooltip应用程序中的所有 s 都会获得该样式。

首先您需要创建一个theme.js文件:

'use strict';

import { createMuiTheme } from '@material-ui/core/styles';

const theme = createMuiTheme({
    overrides: {
        MuiTooltip: {
            tooltip: {
                fontSize: "1em",
            },
        },
    },
});

export default theme;
Run Code Online (Sandbox Code Playgroud)

然后将其导入到您的主应用程序组件中,以便它将应用于所有应用程序组件:

'use strict';

import React from "react";
import { ThemeProvider } from '@material-ui/styles';
import CssBaseline from '@material-ui/core/CssBaseline';
import theme from 'theme.js';

export default class App extends React.Component {

    render() {
        return (
            <ThemeProvider theme={theme}>
                <CssBaseline />
                    {/* Your app content */}
            </ThemeProvider>
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

组件级别

通过这种方法,您可以为每个组件定义不同的样式。

'use strict';

import React from "react";
import { makeStyles } from '@material-ui/core/styles';
import Tooltip from "@material-ui/core/Tooltip";

const useStyles = makeStyles({
    tooltip: {
      fontSize: "1em",
    },
});

export default class MyComponent extends React.Component {

    const classes = useStyles();

    render() {
        return (
            <Tooltip classes={{tooltip: classes.tooltip}} />
        );
    }

}
Run Code Online (Sandbox Code Playgroud)


Nea*_*arl 9

您也可以直接使用Typography和设置fontSize。某些组件喜欢BoxTypography继承系统道具,允许您使用顶级道具更改样式:

<Tooltip title={<Typography fontSize={30}>title</Typography>}>
  <IconButton>
    <DeleteIcon />
  </IconButton>
</Tooltip>
Run Code Online (Sandbox Code Playgroud)

现场演示

Codesandbox 演示


zXy*_*ynK 9

使用MUI v5

这将更改内所有工具提示的字体大小<ThemeProvider>

import React from "react";
import { createTheme, CssBaseline, ThemeProvider } from '@mui/material';

const theme = createTheme({
    components: {
        MuiTooltip: {
            styleOverrides: {
                tooltip: {
                    fontSize: '1em'
                }
            }
        }
    }
});

export default function App() {
    return <ThemeProvider theme={theme}>
        {/* Your app content */}
        <CssBaseline />
    </ThemeProvider>;
}
Run Code Online (Sandbox Code Playgroud)