当前位置: 首页 > 面试题库 >

通过JavaScript访问CSS自定义属性(又称CSS变量)

施阎宝
2023-03-14
问题内容

如何var(…)使用JavaScript(纯文本或jQuery)获取和设置CSS自定义属性(在样式表中使用过的属性)?

这是我失败的尝试:单击按钮会更改常规font-weight属性,但不会更改自定义--mycolor属性:

<html>
<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
  <style>
    body { 
      --mycolor: yellow;
      background-color: var(--mycolor);
    }
  </style>
</head>
<body>

  <p>Let's try to make this text bold and the background red.</p>
  <button onclick="plain_js()">Plain JS</button>
  <button onclick="jQuery_()">jQuery</button>

  <script>
  function plain_js() { 
    document.body.style['font-weight'] = 'bold';
    document.body.style['--mycolor'] = 'red';
  };
  function jQuery_() {
    $('body').css('font-weight', 'bold');
    $('body').css('--mycolor', 'red');
  }
  </script>
</body>
</html>

问题答案:

您可以使用document.body.style.setProperty('--name', value);

var bodyStyles = window.getComputedStyle(document.body);
var fooBar = bodyStyles.getPropertyValue('--foo-bar'); //get

document.body.style.setProperty('--foo-bar', newValue);//set


 类似资料:
  • 问题内容: 让我们考虑这个简化的示例,以说明问题: 在上面的代码中,我们能够使用CSS变量来操纵伪元素的。在某些情况下,我们需要与主要元素具有相同的颜色,但是由于我们不知道使用哪种颜色,因此我们无法手动设置它,最好的方法应该是使用该值。 如此处所述:设置为使用变量继承的CSS显示属性不起作用,使用将不起作用。 有什么方法可以将值存储在CSS变量中,以后再在任何属性中使用它(在我们的示例中)? 问题

  • 问题内容: 假设我有以下CSS: 以后可以在JavaScript中以某种方式知道给定CSS属性的值是什么吗? 问题答案: 我认为您无法访问无效的属性名称,至少对我而言,它不适用于Chrome或Firefox。CSSStyleDeclaration只是跳过了无效属性。对于给定的CSS: 对象仅包含以下键: 但是,有趣的是,这是DOM-Level-2样式规范所说的: 尽管实现可能无法识别CSS声明块中

  • 问题内容: 有没有办法从javascript访问CSS变量?这是我的css变量声明。 问题答案: 只是标准方式: 获取计算的样式 使用以获得所需的属性的值 getComputedStyle(element).getPropertyValue(‘–color-font-general’); 例:

  • 问题内容: 我有些不清楚的地方: 1)如果只有一种颜色,并且每侧相同,就不可能直接获得div的全局边框颜色: 而不是做: 要么 要么 … 2)在CSS文件中具有样式属性时,只能通过getComputedStyle方法访问它们,而不能通过样式属性(如内联定义的样式属性)或通过div中的样式属性来访问,对吗? 这是行不通的。 3)如果要设置样式属性,则必须使用元素的样式属性,是否无法使用计算出的样式对

  • 问题内容: 是否可以获取文档中CSS文件的全部文本内容?F.ex: 我不是真的通过document.styleSheets获取所有CSS规则,还有另一种方法吗? 更新: 当然有ajax选项,我感谢给出的答案。但是似乎没有必要使用已经在浏览器中加载的ajax重新加载文件。因此,如果有人知道提取当前CSS文件的文本内容的另一种方法(不是CSS规则),请发表! 问题答案: 如果样式表包含在同一个域中,则

  • 我们知道,在 CampusBuilder 中创建的物体,只有在编辑了 UserID、Name 或者自定义属性后,导入到 ThingJS 中才能成为独立的管理对象,被程序读取或修改。 从 CampusBuilder 导入的用户自定义的属性可通过 userData 属性访问到。 访问自定义属性的语法 obj.userData[propertyName]; 其中,propertyName 为自定义属