JavaScript

超轻量级php框架startmvc

详解vue2.0 transition 多个元素嵌套使用过渡

更新时间:2020-05-18 23:36:01 作者:startmvc
在做vue的demo的时候遇到一个问题,多个嵌套的元素如何设置transition?我的代码:<divid='de

在做vue的demo的时候遇到一个问题,多个嵌套的元素如何设置transition?

我的代码:


<div id='demo'>
 <button @click="show = !show">按钮</button>
 <transition name='move'>
 <div class="v-d" v-show="show">
 <div class='in in_move'></div>
 </div>
 </transition>
 </div>

//css
.v-d{
 width:50px;
 height:50px;
 padding:10px;
 transition: all 0.4s linear
 }
 .v-d .in{
 width:30px;
 height:30px;
 background:#000;
 transition: all 0.4s linear
 }
 .move-enter-active, .move-leave-active{
 transition: all 0.4s linear
 } 
 .move-enter, .move-leave-active{
 opacity: 0;
 transform: translateX(30px);
 } 
 .move-enter, .move-leave-active .in{
 transform: rotate(45deg)
 } 

//js
window.onload = function(){
 new Vue({
 el: '#demo',
 data: {
 show: false
 }
 })
 }

运行代码后发现这个类名的过渡:


.move-enter, .move-leave-active .in{
 transform: rotate(180deg)
} 

没起作用,我开始以为这种嵌套的写法不支持,但是后来经过多次尝试后发现,原来transition 应用的类名不能和基本样的类名一样,也就是.in这个类必须换名才能起作用,所以在改动下面代码:


<transition name='move'>
 <div class="v-d">
 <div class='in in_move'></div>
 </div>
</transition>

.move-enter, .move-leave-active .in_move{
 transform: rotate(180deg)
} 

改完运行就ok了,实现了元素旋转和位移。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

vue 多个元素的过渡 vue2.0 transition vue2.0 过渡