zoukankan      html  css  js  c++  java
  • css 变量

    • 2017年3月,微软宣布 Edge 浏览器将支持 CSS 变量。
      这个重要的 CSS 新功能,所有主要浏览器已经都支持了。

    • 声明css变量的时候,变量名前面要加两根连词线(--)。
      变量名大小写敏感,--header-color和--Header-Color是两个不同变量。

    • var()函数用于读取变量。
      var()函数还可以使用第二个参数,表示变量的默认值。如果该变量不存在,就会使用这个默认值。
      第二个参数不处理内部的逗号或空格,都视作参数的一部分。

    如果变量值是一个字符串,可以与其他字符串拼接。
    如果变量值是数值,不能与数值单位直接连用。必须使用calc()函数,将它们连接。

    .foo {
      --gap: 20;
      /* 无效 */
      margin-top: var(--gap)px;
    }
    .foo {
      --gap: 20;
      /* 有效 */
      margin-top: calc(var(--gap) * 1px);
    }
    

    如果变量值带有单位,就不能写成字符串。

    /* 无效 */
    .foo {
      --foo: '20px';
      font-size: var(--foo);
    }
    
    /* 有效 */
    .foo {
      --foo: 20px;
      font-size: var(--foo);
    }
    

    ===同一个 CSS 变量,可以在多个选择器内声明。读取的时候,优先级最高的声明生效。这与 CSS 的"层叠"(cascade)规则是一致的。
    全局的变量通常放在根元素:root里面,确保任何选择器都可以读取它们。

    :root {
      --main-color: #06c;
    }
    

    ===对于不支持 CSS 变量的浏览器,可以采用下面的写法。

    a {
      color: #7F583F;
      color: var(--primary);
    }
    

    也可以使用@support命令进行检测。

    @supports ( (--a: 0)) {
      /* supported */
    }
    
    @supports ( not (--a: 0)) {
      /* not supported */
    }
    

    ===JavaScript 也可以检测浏览器是否支持 CSS 变量。

    const isSupported =
      window.CSS &&
      window.CSS.supports &&
      window.CSS.supports('--a', 0);
    
    if (isSupported) {
      /* supported */
    } else {
      /* not supported */
    }
    

    ===JavaScript 操作 CSS 变量的写法如下。

    // 设置变量
    document.body.style.setProperty('--primary', '#7F583F');
    
    // 读取变量
    document.body.style.getPropertyValue('--primary').trim();
    // '#7F583F'
    
    // 删除变量
    document.body.style.removeProperty('--primary');
    

    这意味着,JavaScript 可以将任意值存入样式表。

    那些对 CSS 无用的信息,也可以放入 CSS 变量。

    --foo: if(x > 5) this.width = 10;
    

    上面代码中,--foo的值在 CSS 里面是无效语句,但是可以被 JavaScript 读取。这意味着,可以把样式设置写在 CSS 变量中,让 JavaScript 读取。
    所以,CSS 变量提供了 JavaScript 与 CSS 通信的一种途径。

  • 相关阅读:
    475. Heaters
    69. Sqrt(x)
    83. Remove Duplicates from Sorted List Java solutions
    206. Reverse Linked List java solutions
    100. Same Tree Java Solutions
    1. Two Sum Java Solutions
    9. Palindrome Number Java Solutions
    112. Path Sum Java Solutin
    190. Reverse Bits Java Solutin
    202. Happy Number Java Solutin
  • 原文地址:https://www.cnblogs.com/cag2050/p/6866327.html
Copyright © 2011-2022 走看看