css自定义变量

css是可以支持变量,且所有主流浏览器都支持。css变量又称"css自定义属性",css的变量声明是以“--”前缀,而前缀是"$"或"@"被预处理器sass或less占用,所以,css以"--"开头可以避免与预处理器产生冲突,

  1. css的变量名是区分大小写的,--primary-size和--Primary-Size是完全不同的。

2.属性名可以包含数字,字母,以及下划线或者短横线,也可以是中文,日文或者韩文,但不能是属性名或数字开头,不能包含$,[,^,(,%等字符。

3.变量--primary只能用属性值,不能用作属性名

.foo {
  --primary: margin-top; /* 无效 */
  var(--primary): 2px;
}

4.数字和单位直接写一起需使用calc()函数

--gap: 20;
  margin-top: calc(var(--gap) * 1px);

 /**错误的方式**/
--font-size:10px *3;
--sum:'10px';/*不能带字符串,否则失效*/
 padding-top:var(--sum)

/**正确的方式**/
--font-size:calc(10px *3);
--sum:10px;
 padding-top:var(--sum)

拓展
cal()函数支持 "+", "-", "*", "/" 运算,需要注意的是,运算符前后都需要保留一个空格,例如:width: calc(100% - 10px);
任何长度值都可以使用calc()函数进行计算;
calc()函数使用标准的数学运算优先级规则;

5.变量的值是字符串时,可以直接拼接

:root{
  --screen-category: 'category'  //变量值是字符串
}
body:after {
  content: '--screen-category: 'var(--screen-category);  // 直接拼接
}

6.var()函数第二个参数是设置默认值,若该变量不存在,则使用此默认值

color: var(--foo, #7F583F);

7.css变量可以在任意选择器中使用包括在标签元素style及@media中

/**style*/
        .wrapper .card {
            animation: animate 15s linear infinite;
            animation-delay: calc(3s * var(--delay));
        }
 
/**@media*/ :root{ --column-size:4; } @media screen and (min-width: 1200px) { :root{ --column-size: 3; } }

若想了解更深可看大神文章:
https://www.ruanyifeng.com/blog/2017/05/css-variables.html
https://www.zhangxinxu.com/wordpress/2016/11/css-css3-variables-var/

你可能感兴趣的:(css自定义变量)