css自定义变量

html-css016

css自定义变量,第1张

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

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

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

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

拓展

cal()函数支持 "+", "-", "*", "/" 运算,需要注意的是,运算符前后都需要保留一个空格,例如:width: calc(100% - 10px);

任何长度值都可以使用calc()函数进行计算;

calc()函数使用标准的数学运算优先级规则;

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

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

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

若想了解更深可看大神文章:

https://www.ruanyifeng.com/blog/2017/05/css-variables.html

https://www.zhangxinxu.com/wordpress/2016/11/css-css3-variables-var/

本文已经假设你熟悉CSS变量,如果不熟悉,可以看我写的CSS变量基础知识: https://www.jianshu.com/p/a0f6233cf335

在研究Vue 3的“单文件驱动的CSS变量”之前,我们先看看Vue 2怎么使用CSS变量。

:style是行内样式,行内样式的缺点至少有三个:1. 字符多,写起来麻烦;2. 行内意味着无法复用,class可以复用;3. :style无法定义伪元素的样式。

CSS变量优势其实很明显,上面案例中, <div class="a-container">A元素</div>并没有写style,而且, a-container 是可以复用的,可以用在无数个元素上。最后,在<style>标签里可以定义伪元素的样式。

Vue 3加入了“单文件驱动的CSS变量”,它也是一种语法糖,到今天有2个版本,旧版简称“style vars”版本,因为被人诟病“创造了方言”而改成了新版,旧版我就不说了,新版用法举例:

也就是说,凡是<style>中使用了v-bind函数,都将传值视为CSS变量表达式,而且缺省 -- 符号。变量会自动去<script setup>里查找同名顶层变量。

拼接字符串要遵循CSS变量规范,CSS变量规范并没有直接拼接字符串的办法,而是采用calc乘法。

写起来是对象的点运算符,但是要用引号包裹起来,而且为了跟CSS常用的双引号区分,最好使用单引号。

Vue 2的写法在3里依然可用,而且更贴近原生,可以说是标准写法,而Vue 3实际上是2的语法糖。

方便程度上说,Vue 3的肯定更方便。

由于使用CSS变量,所以IE全不支持,老内核Edge全不支持。

如何在CSS文件里加入变量:这个技巧说来很简单。我们让Apache把任何stylesheet重定向到一个指定的PHP脚本。该脚本会一行行读取stylesheet的内容,找到并替换任何用户自定义的变量,最终会重新生成一个CSS样式表。浏览器不会发觉到有什么地方不同。在后面,我们会讨论如何缓存生成的最终结果避免加大CPU的负载。