访问 css 中的全局变量
Accessing global variable in css
:root {
--color: blue;
}
div {
--color: green;
color: var(--color)
}
#alert {
--color: red;
color: var(--color)
}
<p>What's my color?</p>
<div>and me?</div>
<div id='alert'>
What's my color too?
<p>color?</p>
</div>
在上面的代码中,如何使用 id='alert' 访问 div 中 --color 的全局值?
或者换句话说,在 CSS 中是否有任何方法可以像 c++ 中的 ::(作用域解析运算符)一样访问全局变量??
CSS自定义变量是可继承的,也就是说当你在:root
中定义一个变量时,它适用于所有元素。
当您将它应用到 div
时,所有 div 和 div
中的所有内容都会发生变化。
并且因为它们已经被继承,它们父s/root的值不能被访问。
查看此 pen 进行一些试验。
一个方法 hack 是复制变量并使用它。
:root {
--color: blue;
--colorRoot: var(--color);
color: var(--color);
}
div {
--color: green;
color: var(--color);
}
#inside {
color: var(--colorRoot);
}
<div> I am inside a div.<br><span id="inside">I am inside</span></div>
I am ouuuuuutside
很确定那不是你想做的。
有这个可能
:root {
--color: blue;
}
div {
color: var(--color);
}
#alert {
color: var(--color);
}
<p>What's my color?</p>
<div style="--color:green">and me?</div>
<div id="alert" style="--color:red">
What's my color too?
<p>color?</p>
</div>
或者:
:root {
--color: blue;
}
div {
--color: green;
color: var(--color);
}
#alert {
--color: red;
color: var(--color);
}
<p>What's my color?</p>
<div>and me?</div>
<div id="alert">
What's my color too?
<p>color?</p>
</div>
你不能用 CSS 做到这一点。
如果您重复声明同一个变量,它将使用本地声明的变量。
看到这个-
:root { --color: blue; }
div { --color: green; }
#alert { --color: red; }
* { color: var(--color); }
<p>I inherited blue from the root element!</p>
<div>I got green set directly on me!</div>
<div id='alert'>
While I got red set directly on me!
<p>I’m red too, because of inheritance!</p>
</div>
:root {
--color: blue;
}
div {
--color: green;
color: var(--color)
}
#alert {
--color: red;
color: var(--color)
}
<p>What's my color?</p>
<div>and me?</div>
<div id='alert'>
What's my color too?
<p>color?</p>
</div>
在上面的代码中,如何使用 id='alert' 访问 div 中 --color 的全局值? 或者换句话说,在 CSS 中是否有任何方法可以像 c++ 中的 ::(作用域解析运算符)一样访问全局变量??
CSS自定义变量是可继承的,也就是说当你在:root
中定义一个变量时,它适用于所有元素。
当您将它应用到 div
时,所有 div 和 div
中的所有内容都会发生变化。
并且因为它们已经被继承,它们父s/root的值不能被访问。
查看此 pen 进行一些试验。
一个方法 hack 是复制变量并使用它。
:root {
--color: blue;
--colorRoot: var(--color);
color: var(--color);
}
div {
--color: green;
color: var(--color);
}
#inside {
color: var(--colorRoot);
}
<div> I am inside a div.<br><span id="inside">I am inside</span></div>
I am ouuuuuutside
很确定那不是你想做的。
有这个可能
:root {
--color: blue;
}
div {
color: var(--color);
}
#alert {
color: var(--color);
}
<p>What's my color?</p>
<div style="--color:green">and me?</div>
<div id="alert" style="--color:red">
What's my color too?
<p>color?</p>
</div>
或者:
:root {
--color: blue;
}
div {
--color: green;
color: var(--color);
}
#alert {
--color: red;
color: var(--color);
}
<p>What's my color?</p>
<div>and me?</div>
<div id="alert">
What's my color too?
<p>color?</p>
</div>
你不能用 CSS 做到这一点。
如果您重复声明同一个变量,它将使用本地声明的变量。
看到这个-
:root { --color: blue; }
div { --color: green; }
#alert { --color: red; }
* { color: var(--color); }
<p>I inherited blue from the root element!</p>
<div>I got green set directly on me!</div>
<div id='alert'>
While I got red set directly on me!
<p>I’m red too, because of inheritance!</p>
</div>