javascript - CSS伪类在通过JS更新变量值后消失
问题描述
我希望能够通过 JS 更新 CSS 变量,但是当我更新变量时,CSS 伪元素会被破坏(即消失)。
这是 SCSS 代码:
:root {
--test-thing: "";
}
.folder-1-open span::after {
width: 90%;
height: 85%;
bottom: 0;
left: 5%;
background-color: #fff;
z-index: 3;
content: var(--test-thing);
}
我试图这样操纵变量:
const root = document.documentElement
root.style.setProperty('--test-thing', "Hello World")
上面的 CSS 在它所应用的元素(标签)上工作得非常好,基本上只是一个白色方块,但是一旦我尝试更新 CSS 变量--test-thing
以通过content
道具添加一个字符串,整个事情就消失了。
用伪元素或类不可能做到这一点吗?
通过研究 SO 上的相关帖子,我的理解是使用 CSS 变量是可能的。
对于上下文,我正在处理这个纯 CSS 交互式文件夹的示例(当它打开时,我想动态更新内容)。
解决方案
好的,我知道为什么会这样了。仍然不是 100% 确定原因,但这与新值不在引号中的事实有关。只需将值放在引号中,它就可以正常工作。
const root = document.documentElement
root.style.setProperty('--test', "'Hello World'") // <-- this needs to be in quotes
:root {
--test: "";
}
#test {
height: 100px;
width: 100px;
background: #ccc;
}
#test:after {
content: var(--test);
min-width: 100px;
background: #000;
min-height: 30px;
color: #fff;
}
<div id="test">
</div>
推荐阅读
- python-3.x - Pandas:如何从另一个数据框中获取出现次数?
- reactjs - 无法使用 useRef 挂钩访问 React Native 中的 scrollToIndex() 方法
- angular - 如何解决 Angular 8 中 Observable 中的捕获错误?
- google-apps-script - 通过 Google Apps 脚本使用 Gmail API 的邮件发送限制
- java - JVM 因 EXCEPTION_ACCESS_VIOLATION ntdll.dll+0x1b96f 崩溃
- django - Django编写中间件来扩展self.request
- ios - SwiftUI 关闭多个模式表
- java - 当我运行我的程序 Java.lang.ClassNotFoundException:con.mysql.jdbc.driver 错误来了
- c++ - 使用循环的字典字符串比较
- microsoft-graph-api - 为 .csv 和 .xls 文件生成的预览链接出错