在带有 Chakra 的全局样式中使用媒体查询断点 UI
Use media query breakpoint inside global styles with Chakra UI
我正在尝试在 Chakra 中使用媒体查询断点 UI global styles.
这是我试过的但是 :
import { ChakraProvider, extendTheme } from "@chakra-ui/react";
const theme = extendTheme({
styles: {
global: (props) => ({
`@media screen and (max-width: ${props.theme.breakpoints.sm})`: {
div: {
border: "1px solid",
},
},
}),
}
});
function App() {
return (
<ChakraProvider theme={theme}>
<div>Hello world!</div>
</ChakraProvider>
);
}
export default App;
我也尝试连接 属性 名称,但它也无效:
const theme = extendTheme({
styles: {
global: (props) => ({
"@media screen and (max-width: " + props.theme.breakpoints.sm + ")": {
div: {
border: "1px solid",
},
},
}),
}
});
我发现的唯一解决方法是对值进行硬编码,而不是从 props.theme
:
中读取它
const theme = extendTheme({
styles: {
global: {
"@media screen and (max-width: 30em)": {
div: {
border: "1px solid",
},
},
},
}
});
还有其他解决办法吗?我在文档中找不到这种情况。
您可以使用 bracket notation.
访问动态 属性 名称
const theme = extendTheme({
styles: {
global: (props) => ({
[`@media screen and (max-width: ${props.theme.breakpoints.sm})`] : {
div: {
border: "1px solid",
},
},
}),
}
});
我正在尝试在 Chakra 中使用媒体查询断点 UI global styles.
这是我试过的但是
import { ChakraProvider, extendTheme } from "@chakra-ui/react";
const theme = extendTheme({
styles: {
global: (props) => ({
`@media screen and (max-width: ${props.theme.breakpoints.sm})`: {
div: {
border: "1px solid",
},
},
}),
}
});
function App() {
return (
<ChakraProvider theme={theme}>
<div>Hello world!</div>
</ChakraProvider>
);
}
export default App;
我也尝试连接 属性 名称,但它也无效:
const theme = extendTheme({
styles: {
global: (props) => ({
"@media screen and (max-width: " + props.theme.breakpoints.sm + ")": {
div: {
border: "1px solid",
},
},
}),
}
});
我发现的唯一解决方法是对值进行硬编码,而不是从 props.theme
:
const theme = extendTheme({
styles: {
global: {
"@media screen and (max-width: 30em)": {
div: {
border: "1px solid",
},
},
},
}
});
还有其他解决办法吗?我在文档中找不到这种情况。
您可以使用 bracket notation.
访问动态 属性 名称const theme = extendTheme({
styles: {
global: (props) => ({
[`@media screen and (max-width: ${props.theme.breakpoints.sm})`] : {
div: {
border: "1px solid",
},
},
}),
}
});