神秘巨星来了吗?快,打追光,快,快给她镜头。 ------《神秘巨星》
神秘巨星是谁?它就是 CSS Variables 。
简介
CSS Variables,一个并不是那么新的东西,但对css来说绝对是一场革命。
之前使用变量的时候,需要借助sass、less等预处理工具来实现,现在我们可以直接使用css来声明变量。
兼容性
老规矩,先来看下兼容性

兼容性一片绿,红的那不是还有两个吗?做大事怎么能拘小节呢,让它咕噜(gun)一边去吧。
语法
语法有点难看但很简单, --* 来声明变量名, var(--*) 来使用,也许你要问了,为什么使用 -- 不用 $ 一类的呢,唉,那不是sass、less两个货用了吗
声明和使用必须放在{}代码块里
| body{ --bg-color: lightblue; background-color: var(--bg-color);} |

代码是不是很简单,可以直接看效果,就不赘述了。
全局变量与变量覆盖
在 :root 代码块里面声明的变量就是全局变量,并且局部变量会覆盖全局变量
| :root{ --bg-color: red;}body{ --bg-color: lightblue; background-color: var(--bg-color);} |
最后生效的是 --bg-color: lightblue , bg-color 变量的值也就变成了 lightblue
变量的缺省值
完整的变量使用语法 var( [, ]? ) ,当变量没有定义的时候,会使用后面的值。看下面的例子
| body{--1: red;color:var(--2, blue);} |
上面代码会在 body 的作用域里面查找 --2 变量,没有的话就会查找全局,都没有的话就会使用后面的值,所以最后生效的颜色就是blue
可以看到,上面我们的变量名直接使用了数字:joy:,css变量很叼的,不只是数字,汉字都是可以的。
参与计算
| :root{ --bg-color: lightblue; --文字颜色: white; --fong-size: 30;}body{ background-color: var(--bg-color);}div{ color: var(--文字颜色); font-size: var(--fong-size)px;} |
此时div里面的文字的大小是多少呢?是浏览器默认的大小,为什么不是咱们想象的30px呢,这是因为变量转换的时候末尾会带上空格, var(--fong-size)px 会转换成 30 px
我们可以老老实实声明变量的时候带上单位
新闻热点
疑难解答