styled-components:扩展样式并更改元素类型
Posted
技术标签:
【中文标题】styled-components:扩展样式并更改元素类型【英文标题】:styled-components: extend styles and change element type 【发布时间】:2019-09-10 14:48:29 【问题描述】:假设我有以下样式:
color: black;
border: 1px solid white;
我想将它们都应用于不同类型的两个元素:
const SomeImg = styled.img`
margin: 2em;
`;
const SomeDiv = styled.div`
margin: 3em;
`;
如何让这两个元素都扩展这些样式?
如果他们都是<div>
或<img>
,那就很容易了。我可以这样做:
const ExtendMe = styled.div`
color: black;
border: 1px solid white;
`;
const SomeDiv = styled(ExtendMe)`
margin: 2em;
`;
const OtherDiv = styled(ExtendMe)`
margin: 3em;
`;
【问题讨论】:
【参考方案1】:您可以使用 styled-components 中的 prop "as" 来更改组件的 html 标签: https://www.styled-components.com/docs/api#as-polymorphic-prop
下面是您想要的示例:
const ExtendMe = styled.div`
color: black;
border: 1px solid white;
`;
const SomeImg = styled(ExtendMe).attrs(
as: "img"
)`
margin: 2em;
`;
const SomeDiv = styled(ExtendMe)`
margin: 3em;
`;
你可以看到:https://codesandbox.io/embed/mj3j1xp6pj?fontsize=14
【讨论】:
以上是关于styled-components:扩展样式并更改元素类型的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 styled-components 更改其他组件中单个组件的样式?
使用 styled-components 覆盖 material-ui 按钮样式
react——css-in-js——styled-components库——定义样式——样式继承——属性传递
styled-components - 为啥在组件样式之后注入全局样式?