【问题标题】:How to update styled-components' variables depending on the media queries?如何根据媒体查询更新样式组件的变量?
【发布时间】:2020-11-20 15:10:20
【问题描述】:

我的主题如下:

const theme = {color: red};

我在组件中以这种方式使用这个变量:

const Button = styled.button`
  color: ${props => props.theme.color};
`;

而且我希望如果屏幕宽度小于 992,颜色变为绿色。如何使用样式化的组件主题来实现这一点?因为,使用 css 变量我可以做下一步:

:root {
  --color: red;
  
  @media (max-width: 991px) {
    --color: green;
  }
}

但在 styled-components 中这是不可能的。我目前看到的一种方法是像这样设置主题变量:

const theme = {color: var(--color)}

但是在这种情况下我不能在js中使用这个变量值。那么,有什么办法呢?

【问题讨论】:

    标签: javascript reactjs styled-components


    【解决方案1】:

    您可以以几乎相同的方式将媒体查询与样式化组件一起使用,因此,如果您在主题对象中拥有想要使用的两种颜色,您最终会得到类似

    const Button = styled.button`
      color: ${props => props.theme.colorRed};
      @media (max-width: 991px) {
        color: ${props => props.theme.colorGreen};
      }
    `;
    

    【讨论】:

    • 但是,如果我想在多种情况下将此逻辑与颜色一起使用怎么办?在每种情况下我都需要复制粘贴此代码吗?有没有更舒服的方式?
    猜你喜欢
    • 2018-06-30
    • 2020-04-14
    • 1970-01-01
    • 2019-03-19
    • 2011-10-27
    • 2021-05-31
    • 2012-05-16
    • 2021-05-18
    • 2023-03-10
    相关资源
    最近更新 更多