背景
最近在打开一些网站的,查看其CSS样式的时候,发现如下图:
所以就很好奇,原来现在CSS样式变量已经可以正式投入生产使用了,所以希望能够做个简单了解。
浏览器的兼容性:
CSS变量var()
是什么
自定义属性(有时候也被称作CSS 变量或者级联变量)是由 CSS 作者定义的,它包含的值可以在整个文档中重复使用。由自定义属性标记设定值(比如: –main-color: black;),由 var() 函数来获取值(比如: color: var(–main-color);)
通俗的说,就是CSS以后不需要用less
或css
也能正常使用变量去定义一些常用值。
怎么用
声明以及对应作用域
1
2
3
4
5
6
7
8
9
10
11/* 可以HTML 文档的任何地方访问到它 */
:root {
--main-bg-color: brown;
}
:where(html){
}
/* 只能在element元素下面所对应使用 */
element {
--main-bg-color: brown;
}引用变量
1 | element { |
- 自带继承
1 |
|
- 自定义属性备用值
var(--my-var, xxx)
,当一个变量未定义或非法值的时候,可以red
用来做正常显示值,备用值并不是用于实现浏览器兼容性的。
1 | .two { |
- JS获取变量值
1 | /设置变量 |
CSS变量实战
在前端项目中如何使用CSS变量,一般是通过构建工具生成的兼容性代码。
浏览器是否支持
1 | const isSupported = window.CSS && window.CSS.supports && window.CSS.supports('--a',0); |
也可以通过CSS中@supports
做判断:
1 | @supports ( (--a: 0)) { |
应用场景
- 最常用的是网站换主题,在开发过程直接按照CSS变量去编写,而不需要去了解SASS或LESS的语法
- 原本一些动画效果,需要多个css样式区分,现在可以通过css变量实现,从而减少代码
- 结合JS操作事件+更改CSS变量,实现更多CSS效果
变量库
1 | @import "https://unpkg.com/open-props"; |
参考资料
- 本文作者: Qborfy
- 本文链接: https://www.qborfy.com/today/20230208.html
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!