美文网首页
CSS3变量的使用方法

CSS3变量的使用方法

作者: ryanWSJ | 来源:发表于2020-03-07 23:49 被阅读0次

    1.兼容性

    1. FireFox > 49
    2. Chrome > 49
    3. Safari > 9.1
    4. Opera > 41
    5. IOS Safari >9.3

    2.使用语法

    CSS中原生的变量定义语法是:--*,变量使用语法是:var(--*),其中*表示我们的变量名称。变量名称不能包含$,[,^,(,%等字符,普通字符局限在只要是“数字[0-9]”“字母[a-zA-Z]”“下划线_”和“短横线-”这些组合,但是可以是中文,日文或者韩文。例如:

    :root {
      --1: #369;
    }
    body {
      background-color: var(--1);
    }
    

    CSS变量使用完整语法
    CSS变量使用的完整语法为:var( [, ]? ),用中文表示就是:var( <自定义属性名> [, <默认值 ]? ),例如:

    .box {
      --1: #369;
    }
    body {
      background-color: var(--1, #cd0000);
    }
    

    3.变量的作用域

    :root { --color: purple; }
    div { --color: green; }
    #alert { --color: red; }
    * { color: var(--color); }
    
    <p>我的紫色继承于根元素</p>
    <div>我的绿色来自直接设置</div>
    <div id='alert'>
      ID选择器权重更高,因此阿拉是红色!
      <p>我也是红色,占了继承的光</p>
    </div>
    

    变量作用域和DOM绑定,如果是全局变量采用:root { --color: purple; }形式来声明,所有的样式里面都可以使用。
    div { --color: green; }局部使用,可以当作是局部变量覆盖全局变量,也可以当作是div的层级优先级更高。会覆盖掉全局的变量值。

    4.CSS变量不合法的缺省特性

    请看下面这个例子:

    body {
      --color: 20px;
      background-color: #369;
      background-color: var(--color, #cd0000);
    }
    // 请问,此时<body>的背景色是?
    A. transparent    B. 20px     C. #369      D. #cd0000
    

    答案是A

    解析:这是CSS变量非常有意思的一个点,对于CSS变量,只要语法是正确的,就算变量里面的值是个乱七八糟的东西,也是会作为正常的声明解析,如果发现变量值是不合法的,例如上面背景色显然不能是20px,则使用背景色的缺省值,也就是默认值代替。千万不能想当然得认为等同于background-color:20px,这也是为什么上面要强调CSS默认值的使用仅限于变量未定义的情况,并不包括变量不合法

    5.CSS变量的空格尾随特性

    body {
      --size: 20;   
      font-size: var(--size)px;
    }
    // 请问,此时<body>的font-size大小是多少?
    A. transparent    B. 20px     C. #369      D. #cd0000
    

    如果你以为是20px就太天真了,实际上,此处font-size:var(--size)px等同于font-size:20 px,注意,20后面有个空格,所以,这里的font-size使用的是<body>元素默认的大小。因此,就不要妄图取消就使用一个数值来贯穿全场,还是使用稳妥的做法:

    body {
      --size: 20px;   
      font-size: var(--size);
    }
    

    或者使用CSS3 calc()计算:

    body {
      --size: 20;   
      font-size: calc(var(--size) * 1px);
    }
    

    6.CSS变量的相互传递特性

    就是说,我们在CSS变量定义的时候可以直接引入其他变量给自己使用,例如:

    body {
      --green: #4CAF50;   
      --backgroundColor: var(--green);
    }
    

    CSS变量的值如果发生变化,引用这个变量的变量值也会发生变化,意思就是发生联动。这样就非常的方便。例如下面的例子,只需要修改一个--columns的值就可以达到响应式的目的。

    .box {
        --columns: 4;
        --margins: calc(24px / var(--columns));
        --space: calc(4px * var(--columns));
        --fontSize: calc(20px - 4 / var(--columns));
    }
    @media screen and (max-width: 1200px) {
        .box {
            --columns: 3;
        }
    }
    @media screen and (max-width: 900px) {
        .box {
            --columns: 2;
        }
    }
    @media screen and (max-width: 600px) {
        .box {
            --columns: 1;
        }
    }
    

    相关文章

      网友评论

          本文标题:CSS3变量的使用方法

          本文链接:https://www.haomeiwen.com/subject/dazkdhtx.html