【问题标题】:How to do overlapping styles with Styled Components React?如何使用 Styled Components React 做重叠样式?
【发布时间】:2020-10-09 16:46:38
【问题描述】:

我是 React with Styled Components 的新手,遇到了以下问题:

如果我有 10 个样式化组件并且每个都具有属性:background-color: green;我是否必须为每个样式化组件编写该属性?或者有什么方法可以为所有人指定吗?谢谢。

【问题讨论】:

  • 样式化组件支持主题化,见:styled-components.com/docs/advanced
  • 使用this
  • @FRMR 这可以用于颜色以外的东西吗?例如:display: flex;?
  • 是的,您可以传递变量来表示您想要的任何 CSS 值。
  • @NickSmith 查看我的回答了解详细说明

标签: reactjs styled-components


【解决方案1】:

有两种方法可以实现共享样式。

  1. 您可以使用styled 函数进一步设置现有样式组件的样式,因此首先声明一个具有共享样式的基本样式组件并使用它定义更特殊样式的组件:

    import styled from 'styled-components';
    
    const Base = styled.div`
      background-color: green;
    `;
    
    const StyledComp1 = styled(Base)`
      display: flex;
    `;
    
    const StyledComp2 = styled(Base)`
      display: block;
    `;
    
  2. 您可以使用 styled-components css 实用功能:

    import styled, { css } from 'styled-components';
    
    const sharedStyles = css`
      background-color: green;
    `;
    
    const StyledComp1 = styled.div`
      ${sharedStyles};
      display: flex;
    `;
    
    const StyledComp2 = styled.div`
      ${sharedStyles};
      display: block;
    `;
    

【讨论】:

  • 噢噢噢!这正是我正在寻找的。推荐哪一个?非常感谢!!
  • 如果您不想在不同类型的元素(div、p、span 等)之间共享样式,请使用 #1。如果您愿意,请使用 #2。
  • 对,有道理!非常感谢您的帮助。顺便说一句,我想知道你是否知道任何遵循最佳编码实践的优秀 React + Styled Components 示例项目。也许有任何开源公司等?
  • 抱歉,我帮不了你。过去我大量使用 styled-components,但都是自学的,实际上我不记得见过任何使用 styled-components 的开源代码。
  • 哦,你的意思是发布一个新问题,询问这些示例项目,我刚刚看到了。是的,看起来它是绝对合适的,你已经得到了一些支持!祝你好运!
猜你喜欢
  • 2021-08-26
  • 2021-05-30
  • 2018-10-20
  • 2020-08-31
  • 2019-12-21
  • 2019-12-21
  • 2020-02-13
  • 1970-01-01
  • 2018-04-14
相关资源
最近更新 更多