• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • var()

    版本:CSS3

    var()函数可以代替元素中任何属性中的值的任何部分。var()函数不能作为属性名、选择器或者其他除了属性值之外的值。(这样做通常会产生无效的语法或者一个没有关联到变量的值。)

    CSS变量

    CSS 自定义属性(也被称为 CSS 变量),目前从 Can I use 上获取的信息显示除了 Edge外主流浏览器的最新版都已经支持这个特性了,而 Edge 也将支持这个属性。考虑兼容尚未实现此特性的浏览器,那目前最好的选择就是使用 PostCSS。

    自定义属性,是一种开发者可以自主命名和使用的CSS属性。浏览器在处理像 color 、position 这样的属性时,需要接收特定的属性值,而自定义属性,在开发者赋予它属性值之前,它是没有意义的。CSS中原生的变量定义语法是:--*,变量使用语法是:var(--*),其中*表示我们的变量名称。关于命名这个东西,各种语言都有些显示,例如CSS选择器不能是数字开头,JS中的变量是不能直接数值的,但是,在CSS变量中,这些限制通通没有,例如:

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

    变量名称规则

    但是,不能包含$[^(%等字符,普通字符局限在“数字[0-9]”、“字母[a-zA-Z]”、“下划线_”和“短横线-”这些组合,但是可以是中文,日文或者韩文,例如

    body {
      --深蓝: #369;
      background-color: var(--深蓝);
    }
    

    浏览器支持

    IE浏览器火狐浏览器opera浏览器chrome浏览器safari浏览器
    IE不支持var(),其余浏览器都支持var()

    语法

    var(<custom-property-name>, <declaration-value>?)

    方法的第一个参数是要替换的自定义属性的名称。函数的可选第二个参数用作回退值。如果第一个参数引用的自定义属性无效,则该函数将使用第二个值。

    取值

    • <custom-property-name>:自定义属性名。在实际应用中它被定义为以两个破折号开始的任何有效标识符。自定义属性仅供作者和用户使用; CSS 将永远不会给他们超出这里表达的意义。
    • <declaration-value>:声明值(后备值)。回退值被用来在自定义属性值无效的情况下保证函数有值。回退值可以包含任何字符,但是部分有特殊含义的字符除外,例如换行符、不匹配的右括号(如)、]或})、感叹号以及顶层分号(不被任何非var()的括号包裹的分号,例如var(--bg-color,--bs;color)是不合法的,而var(--bg-color,--value(bs;color))是合法的)。

    实例

    :root {
      --main-bg-color: pink;
    }
    
    body {
      background-color: var(--main-bg-color);
    }
    
    
    
    /* 在父元素样式中 */
    .component {
      --text-color: #080; /* header-color 并没有被设定 */
    }
    
    /* 在 component 的样式中: */
    .component .header {
      color: var(--header-color, blue); /* 此处 color 被回退到 blue */
    }
    
    .component .text {
      color: var(--text-color, black);
    }
    

    上篇:calc()

    下篇:<number>