本文已经假设你熟悉CSS变量,如果不熟悉,可以看我写的CSS变量基础知识:https://www.jianshu.com/p/a0f6233cf335
在研究Vue3的“单文件驱动的CSS变量”之前,我们先看看Vue2怎么使用CSS变量。
:style是行内样式,行内样式的缺点至少有三个:1.字符多,写起来麻烦;2.行内意味着无法复用,class可以复用;3.:style无法定义伪元素的样式。
CSS变量优势其实很明显,上面案例中,<divclass="a-container">A元素</div>并没有写style,而且,a-container是可以复用的,可以用在无数个元素上。最后,在<style>标签里可以定义伪元素的样式。
Vue3加入了“单文件驱动的CSS变量”,它也是一种语法糖,到今天有2个版本,旧版简称“stylevars”版本,因为被人诟病“创造了方言”而改成了新版,旧版我就不说了,新版用法举例:
也就是说,凡是<style>中使用了v-bind函数,都将传值视为CSS变量表达式,而且缺省--符号。变量会自动去<scriptsetup>里查找同名顶层变量。
拼接字符串要遵循CSS变量规范,CSS变量规范并没有直接拼接字符串的办法,而是采用calc乘法。
写起来是对象的点运算符,但是要用引号包裹起来,而且为了跟CSS常用的双引号区分,最好使用单引号。
Vue2的写法在3里依然可用,而且更贴近原生,可以说是标准写法,而Vue3实际上是2的语法糖。
方便程度上说,Vue3的肯定更方便。
一、Vuecss过渡的基本语法
<divv-if="show":transition="expand">hello</div>
然后为.expand-transition,.expand-enter和.expand-leave添加CSS
/*必需*/
.expand-transition{
transition:all.3sease;
height:30px;
padding:10px;
background-color:#eee;
overflow:hidden;
}
/*.expand-enter定义进入的开始状态*/
/*.expand-leave定义离开的结束状态*/
.expand-enter,.expand-leave{
height:0;
padding:010px;
opacity:0;
}
你可以在同一元素上通过动态绑定实现不同的过渡:
<divv-if="show":transition="transitionName">hello</div>
newVue({
el:'...',
data:{
show:false,
transitionName:'fade'
}