css - Styled-components 引用同级组件的 props

标签 css reactjs styled-components

我有两个样式组件:

const Heading = styled.h3`
  font-size: ${({size}) => ({
    large: '24px',
    medium: '18px',
    small: '14px'
  }[size])}
`

const Paragraph = styled.p`
  font-size: ${({size}) => ({
    large: '18px',
    medium: '16px',
    small: '12px'
  }[size])}
`

并且想添加一些规则,以便它们相互引用——例如,如果大标题位于中段或小段之上,则标题底部应有 20px 的边距,但如果位于大段之上,则应有底部边距 30px。不使用 styled-components 这似乎很容易用类名来做。在你的样式表中你会有这样的规则:

h3.large + p.medium, h3.large + p.small {
  margin-bottom: 20px;
}
h3.large + p.large {
  margin-bottom: 30px;
}

但我不确定如何在样式化组件中做到这一点。我知道我可以将 Paragraph 拆分为三个独立的组件 SmallParagraph、MediumParagraph 和 LargeParagraph,但我真的不想这样做。

最佳答案

您可以使用“组件选择器”来定位另一个样式化的组件:https://www.styled-components.com/docs/advanced#referring-to-other-components

请注意,styled-components v4 beta 围绕此功能进行了一些重要修复以使其更好地工作,因此我绝对建议您升级。

关于css - Styled-components 引用同级组件的 props,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52727725/

相关文章:

javascript - Jquery 图像幻灯片放映不从头开始

html - 为什么 PC 浏览器读取 HTML/CSS 页面的方式与 iPad 不同?

javascript - 如果存在 prop,如何将 CSS 应用于 body 元素?

css - 在自定义样式组件模板字符串上运行 stylelint

reactjs - 如何在 webpack 开发服务器中提供 json 文件等静态资源?

CSS 溢出无法按预期工作并且无法滚动到 div 的底部

html - 奇怪!重要的 margin

html - 如何使用 CSS 创建带有框阴影和动态颜色的 flex slider 单元格?

javascript - 如何避免在 React (ES6) 中对带参数的函数使用内联函数

reactjs - 包含新字体并引用它的正确方法?