css - 在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
.
并且因为它们是被继承的,所以它们的父/根的值不能被访问。
看看这支笔进行一些试验。
一种破解方法是制作变量的副本并使用它。
: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
很确定这不是你想做的。
推荐阅读
- android - 如何访问不同语言的 Android 资源文件?
- node.js - nodejs-express 如何将页面重定向到客户端,从服务器传递一些数据?
- java - Java spring/spring boot 应用程序:Web 逻辑到 Tomcat 的转换
- reactjs - 有没有办法根据屏幕大小切换网络彩票动画?
- reactjs - 反应:setState 没有更新数组
- python - 与我们在 java 中的自定义相同的 Python 对象序列化
- c - 如何处理发送带有“\n”的字符串到Microsoft Print to PDF引起的多页打印问题
- mysql - 将带有两列逗号分隔字段的 JSONL 插入到 mysql 中的单独行中
- c++ - 在 C++ 中重载原始类型的运算符的正确方法是什么?
- windows - 批处理 - 打开命令提示符,然后导航到目录并运行命令