javascript - 在 jQuery 中修改 CSS 变量/自定义属性

标签 javascript jquery css css-variables

在我的应用程序中,我有一些参数,我想使用 jQuery 将它们放入 CSS 变量中。我也想阅读它们。

我在读取 CSS 变量的值时遇到了困难,并尝试了很多东西……在我输入问题时,在“可能已经有了答案的问题”中找到了解决方案。

无论如何,我附上了一个片段,因为我需要知道:
⋅⋅⋅ 为什么方法 1 不起作用?
⋅⋅⋅ 有没有办法使用 jQuery 获取 CSS var 值?

我觉得它缺少一个简单的解决方案来处理 CSS 变量……我错了吗?
当然,如果没有任何办法,我会使用 javascript 解决方案。但我想确定一下。
预先感谢您的回答。

// This method doesn't work for writing CSS var.
$(":root").css("--color1", "red");
console.log(".css method on “:root”      :", $(":root").css("--color1"));

// This methods works for writing CSS var:
$(":root")[0].style.setProperty("--color2", "lime");
console.log("[0].style method on “:root” :", $(":root")[0].style.getPropertyValue('--color2'));
#p1 {
  background-color: var(--color1);
}

#p2 {
  background-color: var(--color2);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>

<body id="bodyID">
  <p id="p1">p with background --color1</p>
  <p id="p2">p with background --color2</p>
</body>

<html>

最佳答案

jQuery 仅支持 version 3.2.0 and later 中的 CSS 自定义属性. 2.x 或更早版本不支持它们,因此使用 .css() 访问它们在这些版本中将不起作用。如果升级 jQuery 不是一个选项,您将需要使用内置的 style 对象来访问它们。

$(":root").css("--color1", "red");
console.log(".css method on “:root”      :", $(":root").css("--color1"));

$(":root")[0].style.setProperty("--color2", "lime");
console.log("[0].style method on “:root” :", $(":root")[0].style.getPropertyValue('--color2'));
#p1 {
  background-color: var(--color1);
}

#p2 {
  background-color: var(--color2);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
<p id="p1">p with background --color1</p>
<p id="p2">p with background --color2</p>

关于javascript - 在 jQuery 中修改 CSS 变量/自定义属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49048192/

相关文章:

jquery - 清除select2而不触发change事件

css - 为什么我的@Font-Faces 无法加载?

html - 如何隐藏表格上的溢出

javascript - 与 ECMAScript 语言规范函数调用部分混淆

javascript - 在其他 float <li> 之前插入(使用 AJAX) float <li> 元素而不移动它们

php - DIV onClick事件强制下载一个pdf文件

php - 使用 Ajax 更新的最佳方法

jquery - 如何让 jquery Tooltipster 插件适用于新创建的 DOM 元素?

javascript - 单击新添加的列表项时 jQuery 单击事件未触发

javascript - SVG 动画(移动)文本,同时其内容发生变化