1
votes

Comment changer le système d'espacement en fonction de la largeur de l'écran Material UI?

J'ai un composant comme celui-ci

<Box px={3}>
  <Content />
</Box>

En fait, lorsque ce code est rendu sur mobile, il n'y a pas de problème. Mais le paddingX reste égal à 24px (j'utilise 8 base - 8 * 3 = 24) lorsque mon application est rendue sur le bureau ou sur un écran plus grand.

P / s: J'ai essayé de modifier theme.spacing dans theme.js mais il semble que l'interface utilisateur matérielle ne nous permette pas de personnaliser l'espacement en fonction des points d'arrêt.

Ma question est donc la suivante: comment puis-je changer le système d'espacement en fonction de la largeur de l'écran?


0 commentaires

4 Réponses :


0
votes

Essayez React Device Detect, cela permet de déterminer sur quel appareil vous exécutez votre code et de créer des comportements spécifiques en fonction de celui-ci

https://www.npmjs.com/package/react-device-detect


1 commentaires

ce n'est pas exactement ce dont j'ai besoin. Dans le thème, nous pouvons définir la valeur d'espacement (c'est-à-dire 8, 16, ...). Ce dont j'ai besoin, c'est d'utiliser theme.breakpoints pour contrôler cette valeur d'espacement.



2
votes

On dirait que cela n'a pas encore été mis en œuvre .

Une solution de contournement suggérée par rnanania consiste à définir un espacement conditionnel en fonction de la détection des points d'arrêt:

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

const theme = useTheme();
const isMobile = useMediaQuery(theme.breakpoints.down('xs'), {
  defaultMatches: true
});

<Grid container spacing={isMobile ? 0 : 4}>
</Grid>


0 commentaires

1
votes

Vous pouvez utiliser les hooks mediaQuery qui peuvent vous aider à récupérer la largeur, c'est-à-dire lg, md, sm et en fonction de cela, vous pouvez modifier conditionnellement l'espacement.

Source: lien vers la documentation avec exemple


0 commentaires

0
votes

Vous ne pouvez pas modifier la valeur de base de l'espacement sur chaque point d'arrêt, mais vous pouvez modifier le multiplicateur d'espacement sur chaque point d'arrêt:

import { createMuiTheme } from '@material-ui/core/styles';
const theme = createMuiTheme(
   {breakpoints: {
    values: {
      xs: 0,
      sm: 600,
      md: 900,
      lg: 1200,
      xl: 1600,
    },
  })

Prend en charge les accessoires de marge et de rembourrage

La personnalisation de la valeur du point d'arrêt peut être effectuée en implémentant createMuiTheme :

https://material-ui.com/customization/breakpoints/#custom-breakpoints

<Box px={{xs:1, sm:2, md:3}}>
  <Content />
</Box>


0 commentaires