神秘巨星来了吗?快,打追光,快,快给她镜头。 ------《神秘巨星》
神秘巨星是谁?它就是 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
我们可以老老实实声明变量的时候带上单位
新闻热点
疑难解答