高分辨率的响应字体大小在 MUI 5 中不起作用

Responsive font size for high resolutions not working in MUI 5

我在我的 React 应用程序中使用 Material UI v5

并使用 responsiveFontSizes 根据收到的选项生成响应式排版设置。

因此,responsiveFontSizes 适用于所有设备尺寸,但仅适用于默认 Material UI 断点。

enter image description here

2560 * 1440、2340 * 1080 甚至 3200 * 1440 等高分辨率或超高分辨率设备上的字体大小根本不起作用。

它们看起来很小。

如果我查看检查模式,我可以看到带有 h3 的排版最大 2.9991rem

enter image description here

我在 Container.

中使用的所有排版组件
<Container maxWidth="md">
  <Typography variant="h1">h1 test</Typography>
  ...
</Container>

如何使响应式字体大小也适用于高分辨率设备?

我遇到了同样的问题。如果您检查 https://mui.com/customization/typography/#responsive-font-sizes,则有图表显示 responsiveFontSizes() 的显示方式。基本上在较低的屏幕分辨率下,与较低的字体大小相比,较高的字体大小缩小得更快。所以我一起跳过了 responsiveFontSizes()

我用 rem 单位 w.r.t 1024px 媒体断点编写了我的自定义排版标签。在 index.css 添加断点以增加 html font-size

选项 1:屏幕分辨率从低到高

App.js

import * as React from 'react';
import { createTheme, ThemeProvider } from '@mui/material/styles';
import Typography from '@mui/material/Typography';
import './index.css';

const theme = createTheme({
  typography: {
    h1: {
      fontWeight: 600,
      fontSize: '2.25rem',
      lineHeight: 2.75,
    },
    h2: {
      fontWeight: 600,
      fontSize: '1.625rem',
      lineHeight: 2.125, 
    },
    ...
  },
});

export default function MyApp() {
  return (
    <ThemeProvider theme={theme}>
      <Typography variant="h1" color="primary">Heading 1</Typography>
      <Typography variant="h2" color="primary">Heading 2</Typography>
    </ThemeProvider>
  );
}

index.css

@media only screen and (min-width: 1024px) {
    html {
    font-size: 100%;
    }
  };
  @media only screen and (min-width: 1280px) {
    html {
    font-size: 125%;
    }
  };
  @media only screen and (min-width: 1536px) {
    html {
    font-size: 150%;
    }
  };
  @media only screen and (min-width: 1920px) {
    html {
    font-size: 187.5%;
    }
  };

选项 2:响应式字体大小(从高到低的屏幕大小): 为此,您必须根据最高分辨率设置 typography fontsize。检查 https://mui.com/customization/theming/#responsivefontsizes-theme-options-theme 其他选项和进一步调整。

import * as React from 'react';
import { createTheme, ThemeProvider, responsiveFontSizes } from '@mui/material/styles';
import Typography from '@mui/material/Typography';

const theme = createTheme({
  typography: {
    h1: { fontSize: '5rem' },
  },
  breakpoints: {
    values: {
      xs: 0,
      sm: 425,
      md: 768,
      lg: 1024,
      xl: 1280,
      '2xl': 1536,
      '3xl': 1920,
      '4xl': 2560,
      '5xl': 3200,
    },
  },
});

export default function MyApp() {
  return (
    <ThemeProvider theme={responsiveFontSizes(theme, { breakpoints: ['xs', 'sm', 'md', 'lg', 'xl', '2xl', '3xl', '4xl', '5xl'], factor: 5 })}>
      <Typography variant="h1" color="primary">
        Heading 1
      </Typography>
      <Typography variant="h6" color="primary">
        Heading 6
      </Typography>
      <Typography variant="body1" color="primary">
        Body 1
      </Typography>
    </ThemeProvider>
  );
}