Rou*_*ica 3 css css3 css-variables
我不currentColor经常使用,但是当我这样做时,它非常有用.
所以我对CSS变量的到来感到有些兴奋.
我们来一个红绿灯.
NB请相信我,日本的红绿灯变成琥珀色到蓝色.我知道这很难相信.我知道蓝灯看起来很绿.但它不是,它是蓝色的.
div {
float: left;
width: 200px;
}
div div {
float: none;
}
.top {
color: rgb(255,0,0);
}
.middle {
color: rgb(255,227,0);
}
.bottom {
color: rgb(63,255,63);
}
.jp .bottom {
color: rgb(0,255,191);
}
.light {
text-align: center;
}
.light::before {
content: '';
display: block;
margin: 6px auto 0;
width: 25px;
height: 25px;
border-radius: 15px;
background-color: currentColor;
}Run Code Online (Sandbox Code Playgroud)
<div class="uk">
<h2>UK Traffic Lights</h2>
<div class="top light">Red</div>
<div class="middle light">Amber</div>
<div class="bottom light">Green</div>
</div>
<div class="jp">
<h2>JP Traffic Lights</h2>
<div class="top light">Red</div>
<div class="middle light">Amber</div>
<div class="bottom light">Blue</div>
</div>Run Code Online (Sandbox Code Playgroud)
现在,聪明的事情
background-color: currentColor;
Run Code Online (Sandbox Code Playgroud)
是它只是读取当前值的任何color内容并使用它.
相比之下...
background-color: var(--current-color);
Run Code Online (Sandbox Code Playgroud)
那不能引用另一个样式声明的当前值,可以吗?
所以,你需要设置4个变量(就像你需要color:在上面的样式中声明4次):
.top {
--color-top: rgb(255,0,0);
}
.middle {
--color-middle: rgb(255,227,0);
}
.bottom {
--color-bottom: rgb(63,255,63);
}
.jp .bottom {
--color-bottom-jp: rgb(0,255,191);
}
Run Code Online (Sandbox Code Playgroud)
而且那么 ......你需要参考各那些不同的变量以后.这意味着background-color每个变量的声明不同:
.top::before {
color: var(--color-top);
background-color: var(--color-top);
}
.middle::before {
color: var(--color-middle);
background-color: var(--color-middle);
}
.bottom::before {
color: var(--color-bottom);
background-color: var(--color-bottom);
}
.jp .bottom::before {
color: var(--color-bottom-jp);
background-color: var(--color-bottom-jp);
}
Run Code Online (Sandbox Code Playgroud)
真?!
这不可能是正确的.我错过了什么吗?
难道就没有办法复制currentColor与var(--current-color)?
CSS变量没有办法表示另一个样式声明的当前值吗?
实际上,您可以设置CSS自定义属性,而不是直接设置color属性,并将其用于color和background-color.
/* Set global variable inside the :root scop */
:root {
--color-top: rgb(255,0,0);
}
div {
float: left;
width: 200px;
}
div div {
float: none;
}
/* Set the local --color variable, according to your need */
.top {
--color: var(--color-top);
}
.middle {
--color: rgb(255,227,0);
}
.bottom {
--color: rgb(63,255,63);
}
.jp .bottom {
--color: rgb(0,255,191);
}
.light {
color: var(--color);
text-align: center;
}
.light::before {
content: '';
display: block;
margin: 6px auto 0;
width: 45px;
height: 45px;
border-radius: 15px;
background-color: var(--color);
}Run Code Online (Sandbox Code Playgroud)
<div class="uk">
<h2>UK Traffic Lights</h2>
<div class="top light">Red</div>
<div class="middle light">Amber</div>
<div class="bottom light">Green</div>
</div>
<div class="jp">
<h2>JP Traffic Lights</h2>
<div class="top light">Red</div>
<div class="middle light">Amber</div>
<div class="bottom light">Blue</div>
</div>Run Code Online (Sandbox Code Playgroud)
我真的不明白你为什么不使用background-color: currentColor它,因为它在你自己的例子中运作良好.