javascript - 获取或设置 CSS 变量

标签 javascript jquery css

jQuery 有办法获取和设置 CSS 变量的值吗? ( MDN - Using CSS variables )

我已经尝试使用普通的 css 函数 $(".element").css("--varname", 1),但它不起作用。

我可以使用普通的 DOM 函数,但我不想将其与 jQuery 混合使用:

element.style.getPropertyValue("--varname");
element.style.setProperty("--varname", value);

我在 transform 中使用这个变量,所以使用这个变量得到的结果是一个 matrix3d() 字符串。我需要在 JS 中获取一些计算的值

最佳答案

你可以使用$.cssHooks, $.support

(function($) {

  // First, check to see if cssHooks are supported
  if (!$.cssHooks) {
    // If not, output an error message
    throw (new Error("jQuery 1.4.3 or above is required"
                     + " for this plugin to work"));
  }

  // Wrap in a document ready call, because jQuery writes
  // cssHooks at this time and will blow away your functions
  // if they exist.
  $(function() {

    $.cssHooks["mainBgColor"] = {
      get: function(elem, computed, extra) {
        // Handle getting the CSS property
        return elem.style.getPropertyValue($.support["mainBgColor"]) 
               || window.getComputedStyle(elem)
                 .getPropertyValue($.support["mainBgColor"])
      },
      set: function(elem, value) {
        // Handle setting the CSS value
        elem.style.setProperty($.support["mainBgColor"], value);
        return elem
      }
    };
    $.support["mainBgColor"] = "--main-bg-color";
    console.log($("h1").css("mainBgColor")); // `"brown"`
    $("h1").css("mainBgColor", "green");
    console.log($("h1").css("mainBgColor")); // `"green"`
  });

})(jQuery);
h1 {
  --main-bg-color: brown;
}
h1 {
  background-color: var(--main-bg-color);
}
<!DOCTYPE html>
<html>
<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>
<body>
  <h1>Hello Plunker!</h1>
  <script>
  </script>
</body>
</html>

plnkr http://plnkr.co/edit/UyhKl8ZpZ9Pyaacl39ay?p=preview

关于javascript - 获取或设置 CSS 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38314608/

相关文章:

jquery - 一个 slider 返回两个值

javascript - 在 reactjs 中设置 componentDidMount 间隔是一种正确的方法吗?

html - border-width 中的 CSS calc()?

javascript - 非返回异步方法

javascript - Javascript 中基本原型(prototype)设计的问题

javascript - 当 Ng-Select 接收空数组时禁用自定义指令 AngularJS

javascript - 扩展功能原型(prototype)的可能性

javascript - AngularJs+ionic 将html数据发送到Controller/popupbox

javascript - 滚动顶部();动画问题

css - Bootstrap Tiles Grid - 第 4 个瓷砖挂起