gpt4 book ai didi

css - 是否可以在 Styled-Component 中使用 Style System 的断点?

转载 作者:行者123 更新时间:2023-12-05 07:20:11 26 4
gpt4 key购买 nike

我想在样式化组件中使用样式化系统的断点和大小调整机制。

目前,我必须使用'react-media',它解决了我的问题,但是这个解决方案伴随着大量的代码重复。这是我当前根据屏幕尺寸设置 StyledComponent 的 border-radius 的解决方案:

import React from 'react'
import styled from 'styled-components'
import theme from '../../theme'
import Media from 'react-media'

const StyledImg = styled.img`
border-radius: ${props => (props.size / 4)};
`

function ProfileImage (props) {
const breakpoint = theme.breakpoints[0]

return <Media query={`(min-width: ${breakpoint})`}>
{matches =>
matches ? (
<StyledImg size={props.size[1]} src={props.src} />
) : (
<StyledImg size={props.size[0]} src={props.src} />
)
}
</Media>
}

function ProfileCard (props) {
return <Box bg='grey' width={1}>
<ProfileImage width={[10, 20]} src={props.src}>
</Box>
}

export default ProfileImage

是否可以获取当前断点索引?我可以这样写吗:

const StyledImg = styled.img`
border-radius: ${props => (props.size[theme.currentBreakpointIndex] / 4)};
`

function ProfileImage (props) {
return <StyledImg {...props} />
}

function ProfileCard (props) {
return <Box bg='grey' width={1}>
<ProfileImage size={[10, 20]} src={props.src}>
</Box>
}

export default ProfileImage

最佳答案

阅读 this他们建议您将断点注入(inject)查询并将它们放在主题中。然后你不能像这样访问它们:

styled.div`
${({theme: {mediaQueries: {small}}}) => small} {
color: red;
}
`

然而,此解决方案使用 css 来更改样式(但在我看来应该这样做)。

关于css - 是否可以在 Styled-Component 中使用 Style System 的断点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57580823/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com