Appearance
Style
class
html
<div class="active text-danger"></div>
对象语法
html
<div :class="classObject"></div>
<div :class="{ active: isActive, 'text-danger': hasError }"></div>
js
let classObject = {
active: true,
'text-danger': false
}
let isActive = true
let hasError = false
// 对象语法
// 键是类名,值是变量
数组语法
html
<div :class="classArray"></div>
js
let classArray = [activeClass, errorClass, isActive ? 'active' : '', classObject]
// 数组语法
// 数组元素:类名的变量,返回类名的表达式,对象语法
style
对象语法
html
<div :style="styleObject"></div>
<div :style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>
js
let styleObject = {
color: 'red',
fontSize: '13px'
}
// 对象语法
数组对象
html
<div :style="styleArray"></div>
<div :style="[baseStyles, overridingStyles]"></div>
js
let styleArray = [styleObject]
// 数组对象
// 数组元素:对象语法值
transition
单元素过渡
单个节点,多个节点切换(只激活一个)
内置组件 <transition>
html
<transition name="[name]" mode="[mode]" appear>
<!-- el -->
</transition>
过渡 class:
.[name]-enter-from
.[name]-enter-active
.[name]-enter-to
.[name]-leave-from
.[name]-leave-active
.[name]-leave-to
过渡 mode:
in-out
先过渡新元素,再过渡旧元素 ❌out-in
先过渡旧元素,再过渡新元素 ✔️
自定义 class:
enter-from-class
enter-active-class
enter-to-class
leave-from-class
leave-active-class
leave-to-class
html
<transition
name="[name]"
enter-active-class="animate__animated animate__tada"
leave-active-class="animate__animated animate__bounceOutRight"
>
<!-- el -->
</transition>
过渡时间:
html
<transition :duration="{ enter: 500, leave: 800 }">...</transition>
钩子函数:
html
<transition
@before-enter="beforeEnter"
@enter="enter"
@after-enter="afterEnter"
@enter-cancelled="enterCancelled"
@before-leave="beforeLeave"
@leave="leave"
@after-leave="afterLeave"
@leave-cancelled="leaveCancelled"
:css="false"
>
<!-- el -->
</transition>
js
let methods = {
beforeEnter(el) {
// ...
},
// 配合css的时候done可选
// 只是用js的时候必须使用done进行回调
enter(el, done) {
done()
},
leave(el, done) {
done()
}
}
列表过渡
内置组件 <transition-group>
html
<transition-group name="[name]" tag="p">
<span v-for="item in items" :key="item" class="list-item"> {{ item }} </span>
</transition-group>
css
.list-item {
transition: all 0.8s ease;
}
.[name]-enter-from,
.[name]-leave-to {
opacity: 0;
transform: translateY(30px);
}
.[name]-move {
transition: transform 0.8s ease;
}