Как вы можете использовать правило @supports
css в материале пользовательского интерфейса makeStyles?
Я пытался найти это, но не нашел ничего, описывающего, как включать правила CSS, такие как supports
Вот стили, которые я хочу иметь:
@supports (display: grid) {
div {
display: grid;
}
}
Я пробовал это, но это не сработало:
const useStyles = makeStyles(() => ({
paper: {
'@supports': {
'(display: grid)': {
display: 'grid';
},
},
}
}))
Синтаксис для этого аналогичен синтаксису медиа-запросов. В вашем случае вам нужно следующее:
const useStyles = makeStyles(() => ({
paper: {
'@supports (display: grid)': {
display: 'grid'
}
}
}))
Вот рабочий пример:
import React from "react";
import Button from "@material-ui/core/Button";
import { makeStyles } from "@material-ui/core/styles";
const useStyles = makeStyles((theme) => ({
button: {
"@supports (background-color: red)": {
marginTop: theme.spacing(5),
backgroundColor: "red"
},
"@supports not (display: unsupportedvalue)": {
color: "white"
},
"@supports not (display: grid)": {
backgroundColor: "purple"
}
}
}));
export default function App() {
const classes = useStyles();
return (
<Button className = {classes.button} variant = "contained">
Hello World!
</Button>
);
}
Связанный ответ:
Связанная документация:
Я исправил синтаксис в этой части.
Точно так же, как вы используете медиа-запросы в Mui, вы можете использовать в нем @support
!
Например:
const useStyles = makeStyles((theme) => ({
grid: {
"@supports (display: grid)": {
display: "grid",
gridTemplateColumns: "1fr 1fr"
}
}
}));
Весь компонент будет выглядеть так:
import React from "react";
import { makeStyles } from "@material-ui/core";
function Grid() {
const useStyles = makeStyles((theme) => ({
grid: {
"@supports (display: grid)": {
display: "grid",
gridTemplateColumns: "1fr 1fr"
}
}
}));
const styles = useStyles();
return (
<div className = {styles.grid}>
<div>Grid Item</div>
<div>Grid Item</div>
<div>Grid Item</div>
<div>Grid Item</div>
</div>
);
}
export default Grid;
А вот пример рабочего кода и коробки: https://codesandbox.io/s/priceless-lamarr-olciu
Спасибо! У вас была небольшая ошибка:
display: 'grid';
должен заканчиваться запятой, а не точкой с запятой, так как это javascript, а не css, в остальном ваш ответ был идеальным!