javascript - 如何从javascript访问css类中定义的css变量?
问题描述
我在 css 类中定义了 css 变量。
.popup {
--popup-opacity: 0;
--popup-visibility: hidden;
opacity: var(--popup-opacity);
visibility: var(--popup-visibility);
}
我想使用 javascript 更新它。如果变量在根元素内,则以下代码有效:
document.documentElement.style.setProperty('--popup-opacity', 1);
document.documentElement.style.setProperty('--popup-visibility', 'visible');
在 css 类中定义变量时,我无法弄清楚如何使其工作。请帮忙。
解决方案
这就是 JS 中继承的工作原理。
如果您使用类选择器在规则集中设置了变量的值,那么该元素将不会从更高的 DOM 继承。
如果你设置了,你会遇到同样的问题.popup { color: red; }
,然后想知道为什么它仍然是红色的是你设置了document.documentElement.style.setProperty('color', "red");
在 DOM 上层定义你的变量:
html {
--popup-opacity: 0;
--popup-visibility: hidden;
}
.popup {
opacity: var(--popup-opacity);
visibility: var(--popup-visibility);
}
然后在同一级别或在其与读取它们的位置之间覆盖它们:
document.body.style.setProperty('--popup-opacity', 1);
document.body.style.setProperty('--popup-visibility', 'visible');
推荐阅读
- sql - SQL Server 复杂联接
- javascript - 当我们从一页更改为另一页时,库存率不显示
- uistackview - 改变水平 UIStackview 中的列宽
- php - MYSQL delete 语句删除了太多行
- kubernetes - Istio mtls 配置错误导致行为不一致
- python - Django Form - 根据外键值过滤列表
- powershell - 如何在跳过正在使用的 VHD 时自动复制 VHD?
- reactjs - 如何防止重新渲染 react-router-dom Link 组件?
- c# - 为什么不能创建静态类的对象?静态类包含哪个构造函数?
- amazon-web-services - 如何从 CloudWatch Logs Insights 获取用户登录持续时间