【发布时间】:2018-02-04 19:16:43
【问题描述】:
const GreenRow = styled.div`
background-color: green;
`
const RedRow = styled.div`
background-color: red;
`
const YellowRow = styled.div`
background-color: yellow;
`
const GreyRow = styled.div`
background-color: grey;
`
const MyComponent = () =>
<div>
<GreenRow>Green row</GreenRow>
<div>Blue row</div>
<RedRow>Red row</RedRow>
<YellowRow>Yellow row</YellowRow>
<GreyRow>Grey row</GreyRow>
</div>
我正在使用styled-components 为组件中的元素设置样式。
我想在组件中的某些元素上应用重复的样式(例如font-weight)。其中一些组件已经使用styled-component 设置样式,所以这将是某种“第二维”样式。
例如,如果我可以使用某个类名定义样式,那么我可以将该类名应用于每个元素。但作为I've understood,styled-components 不返回任何类名。而且我不想开始在组件本身之外的其他文件中定义样式。
另一个想法是使用 styled-component 的 css 库(参见下面的代码)呈现样式并将其包含在每个适用的 styled-component 定义中。但是为了这个目的,我需要将一些元素转换为样式化组件(因为它们没有其他样式)。
const FontWeight = css`
font-weight: 600;
`
应用这种“二次元”样式最简洁的方法是什么?
【问题讨论】:
-
看起来好像您正在定义自定义 HTML 元素。为什么不简单地制作具有共享类的行?就像不是
<GreenRow>Green row</GreenRow>,您可以使用<div class="green row">Green row</div>,然后在.row上设置共享样式,在.green上设置独特样式? -
也许我并不清楚这一点,但我很想继续使用
styled-components。 -
您仍然可以使用
${props => props.component_name && css }应用相同的概念。 -
有趣!您能否提供该解决方案作为答案?
标签: css reactjs styled-components