【发布时间】:2021-10-09 20:10:32
【问题描述】:
我想使用 styled-components 为我的应用设置样式,其中我的组件从现有的全局定义的 CSS 继承样式。在下面的示例中,如何使Surface 继承.raised 和.bordered 类,这样我就不必在每次使用中重复className="raised bordered"?我想要类似于Composition in Emotion 的东西。
https://codesandbox.io/s/optimistic-ramanujan-xs8rt
App.js
import "./styles.css";
import styled from "styled-components";
const App = () => (
<div>
<Surface className="raised bordered">Hello World 1</Surface>
<Surface className="raised bordered">Hello World 2</Surface>
<Surface className="raised bordered">Hello World 3</Surface>
</div>
);
const Surface = styled.div`
color: darkblue;
margin: 20px;
`;
export default App;
styles.css
.raised {
box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px;
}
.bordered {
border: 1px solid black;
}
【问题讨论】:
-
你也可以在这里做合成,你打算如何“继承”它而不在某处写这个css?你问语法是什么?
-
CSS 是用
styles.css编写的。我可以在任何地方定义它,我的问题是如何在styled-components定义上继承 CSS 类样式。我的 OP 中的核心问题是how can I make Surface inherit the classes .raised and .bordered so that I don't have to repeat className="raised bordered" in each usage。有没有这样的语法?
标签: javascript html css reactjs styled-components