样式组件,如何动态生成CSS属性?

时间:2018-06-22 22:05:23

标签: css reactjs styled-components

给出两个动态属性:

  1. currentColor
  2. 剩余卡数

还有const colors = ['blue', 'red', 'green', 'yellow', 'orange']

使用样式化组件,如何动态设置box-shadow属性?其中数字卡剩余数指定盒阴影值的数量。

例如,cardsRemaining == 2:

box-shadow:
    8px 0 0 0 colors[current+1],
    16px 0 0 0 colors[current+2];

例如,cardsRemaining == 4:

box-shadow:
    8px 0 0 0 colors[current+1],
    16px 0 0 0 colors[current+2],
    24px 0 0 0 colors[current+3],
    32px 0 0 0 colors[current+4];

其中currentColor用于在每个框阴影值中分配颜色。

因此,如果cardsRemaining == 4 && currentColor ==蓝色:

box-shadow:
    8px 0 0 0 red,
    16px 0 0 0 green,
    24px 0 0 0 yellow,
    32px 0 0 0 orange;

或者,如果卡剩余== 2 && currentColor ==黄色:

box-shadow:
    8px 0 0 0 orange,
    16px 0 0 0 blue;

您如何使用样式化组件解决此类问题?

谢谢

2 个答案:

答案 0 :(得分:3)

您可以编写一个函数,该函数将给定属性作为参数返回样式。 你去了:solution

答案 1 :(得分:1)

在样式化组件内部,可以访问道具。因此,您可以执行以下操作-

export getBoxShadow = ({cardsRemaining, currentColor }) => logicHere

export const StyledComponent = styled.div`box-shadow: ${getBoxShadow};`

通过@OwlyMoly编辑:如果只想传递颜色:

    const StyledComponent = styled.div`
     box-shadow: 8px 0 0 0 ${props => props.colorToBe}
    `