javascript - styled-components:扩展样式和改变元素类型

标签 javascript html css reactjs styled-components

假设我有以下样式:

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;
`;

最佳答案

您可以使用 styled-components 中的属性“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 上看到

关于javascript - styled-components:扩展样式和改变元素类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55776961/

相关文章:

javascript - 按键组合对象数组

javascript - jquery 子菜单 : li items still toggling

html - 在 Bootstrap 中将图标推到文本的右侧

jquery - 在水平列表项之间添加水平线,可能吗?

css - 如何查看浏览器计算的CSS特异性?

html - 为什么不 flex-grow : 1 work for a table in Safari?

javascript - 在 Android Webview 中,我可以修改网页的 DOM 吗?

javascript - 平滑滚动脚本问题

html - 输入时输入占位符动画

javascript - 如何在 Gitlab CI 中设置环境变量并使其在本地可测试