我想创建一个组件并公开某些可能被父元素覆盖的属性。
这是一个例子。假设我正在创建一个按钮,它有自己的颜色,但如果有--button-bg-color定义,则允许更改其背景颜色:
.my-button {
--bg-color: blue;
/* lots of other css... */
/**
* here I assume that there might be a --button-bg-color defined,
* but I have a fallback to my own --bg-color variable
*/
background-color: var(--button-bg-color, var(--bg-color));
}
Run Code Online (Sandbox Code Playgroud)
上面代码的问题在于该--button-bg-color变量在样式的深处被引用。
我希望我能做的是在顶部某处声明我可能想要使用这个变量。这会告诉我该组件希望被覆盖。
也许是这样的?
.my-button {
--button-bg-color: undefined; /* is there something like undefined? */
--bg-color: blue;
/* the rest of the code is the same */
}
Run Code Online (Sandbox Code Playgroud)
哦,好吧,我刚刚意识到我们可以这样做:
.my-button {
--bg-color: var(--button-bg-color, blue); /* inherit with fallback */
/* lots of other css... */
background-color: var(--bg-color);
}
Run Code Online (Sandbox Code Playgroud)
这样也可以减少重复。