为什么Vue3选择CSS变量
时间:2023-03-31 00:53:03
CSS
.child-1{color:var(--colorBlue);字体大小:var(--fontSize);}.child-2{颜色:var(--colorRed);font-size:var(--fontSizeTest);为什么Vue3选择CSS变量Vue3增加了一个实验性的特性——“单文件组件状态驱动的CSS变量”看到这里,我心里有以下疑问?什么是CSS变量?Sass/Less中不是有变量的定义吗,为什么要用CSS变量呢?现有的vue并没有定义:style来动态绑定css,那么css变量和这个方法有什么区别呢?Vue3做了哪些操作让SFC(Single-FileComponents)能够更好的使用CSS变量。下面讨论这些问题。CSS变量基础知识CSS变量不是某个框架的产物,而是CSS作者定义的标准规范CSS变量,也称为CSS自定义属性,包含可以在整个文档中重复使用的值。通过自定义属性标记设置值(例如:--main-color:black;),通过var()函数获取值(例如:color:var(--main-color);)为什么选择两个连字符(--)表示?因为变量?由Sass使用,@由Less使用。为了不引起冲突,官方的CSS变量改为两行连字符。CSS变量的简单示例如下:CSS变量基础演示地址我是Parent我是Child
.parent{/*变量的作用域是它所在的选择器的有效作用域,所以.parent不能读取child中的变量*/color:var(--body-child);/*定义变量*/--parent-color:blue;}.child{/*通过var读取变量*/color:var(--parent-color);--child-color:green;}结果表明我们现在定义变量--parent-color:blue;在.parent中,并在.child中使用color:var(--parent-color);需要注意的是变量的作用域是它在Scope中的选择器的有效性,比如--child-color:green;定义在.child中,不能在.parent中读取,只对.child元素下的元素有效。如果想在HTML文档中可以访问,可以定义class:root中除了基本使用外,还有以下几点需要注意CSS变量的命名是区分大小写的,即--myColor和--mycolor不一样。var()参数可以使用第二个参数设置默认值。当变量无效时,将使用默认值。CSS变量为JavaScript提供了一种与CSS通信的方式。在JS中,我们可以操作CSS,和操作普通的CSS属性一样//获取一个Dom节点上的CSS变量element.style.getPropertyValue("--my-var");//获取任意一个CSS变量Dom节点getComputedStyle(element).getPropertyValue("--my-var");//修改一个Dom节点上的CSS变量element.style.setProperty("--my-var",jsVar+4);这里是最简单的使用,具体可以查看MDN文档。在Vue2中使用CSS变量前面说过,CSS变量不是某个框架的产物,而是原生CSS的标准规范,所以在Vue2中直接使用CSS变量是肯定可以的,没有任何限制。关键是我们如何将Vue组件中的状态同步到CSS变量中,其实很简单,通过Style绑定即可。Vue2demo地址
我是孩子1