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

如何让Material UI Pagination组件实现响应式布局?

实现Material UI Pagination组件的响应式布局

因为Material UI的Pagination组件size属性仅接受small、medium(默认)、large三个枚举值,无法直接传入3vw这类CSS单位,所以需要通过以下几种方式实现响应式适配:

方法1:CSS媒体查询覆盖组件样式

通过自定义CSS类,针对不同屏幕尺寸调整分页按钮的字体大小、宽高等核心样式,实现细腻的响应式效果:

/* 自定义响应式分页样式 */
.responsive-pagination .MuiPaginationItem-root {
  /* 基础样式 */
  transition: all 0.2s ease;
}

/* 小屏设备(手机) */
@media (max-width: 600px) {
  .responsive-pagination .MuiPaginationItem-root {
    font-size: 0.75rem;
    min-width: 32px;
    height: 32px;
  }
}

/* 中屏设备(平板) */
@media (min-width: 601px) and (max-width: 960px) {
  .responsive-pagination .MuiPaginationItem-root {
    font-size: 0.875rem;
    min-width: 36px;
    height: 36px;
  }
}

/* 大屏设备(桌面) */
@media (min-width: 961px) {
  .responsive-pagination .MuiPaginationItem-root {
    font-size: 1rem;
    min-width: 40px;
    height: 40px;
  }
}

在组件中引入该类:

<Pagination count={10} className="responsive-pagination" />

方法2:用useMediaQuery动态切换官方size值

利用Material UI提供的useMediaQuery钩子结合主题断点,根据屏幕尺寸自动切换官方支持的三个size值,实现快速适配:

import { useTheme } from '@mui/material/styles';
import useMediaQuery from '@mui/material/useMediaQuery';
import Pagination from '@mui/material/Pagination';

function ResponsivePagination() {
  const theme = useTheme();
  const isSmallScreen = useMediaQuery(theme.breakpoints.down('sm'));
  const isLargeScreen = useMediaQuery(theme.breakpoints.up('lg'));

  const paginationSize = isSmallScreen ? 'small' : isLargeScreen ? 'large' : 'medium';

  return <Pagination count={10} size={paginationSize} />;
}

方法3:全局主题配置响应式样式

如果需要在整个项目中统一使用响应式分页,可以通过自定义Material UI主题,全局覆盖Pagination组件的样式:

import { createTheme, ThemeProvider } from '@mui/material/styles';
import Pagination from '@mui/material/Pagination';

const customTheme = createTheme({
  components: {
    MuiPagination: {
      styleOverrides: {
        root: ({ theme }) => ({
          '@media (max-width:600px)': {
            '& .MuiPaginationItem-root': {
              fontSize: theme.typography.pxToRem(12),
              minWidth: theme.spacing(4),
              height: theme.spacing(4),
            },
          },
          '@media (min-width:601px) and (max-width:960px)': {
            '& .MuiPaginationItem-root': {
              fontSize: theme.typography.pxToRem(14),
              minWidth: theme.spacing(4.5),
              height: theme.spacing(4.5),
            },
          },
          '@media (min-width:961px)': {
            '& .MuiPaginationItem-root': {
              fontSize: theme.typography.pxToRem(16),
              minWidth: theme.spacing(5),
              height: theme.spacing(5),
            },
          },
        }),
      },
    },
  },
});

function App() {
  return (
    <ThemeProvider theme={customTheme}>
      <Pagination count={10} />
    </ThemeProvider>
  );
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:09:22