找回密码
 立即注册
查看: 158|回复: 3

vue写todoList遇到的关于vue执行动画过渡,transitionend的问题

[复制链接]

2

主题

1

回帖

24

积分

新手上路

积分
24
发表于 2022-9-24 16:33:59 | 显示全部楼层 |阅读模式
本帖最后由 一一 于 2022-9-24 16:36 编辑
  1. <transition-group tag="ul" class="todo-list" @before-leave="leaveHandel" @before-enter="beforeEnterHandel" @enter="enterHandel" @after-enter="afterEnterHandel">


  2.     <li :class="['todo-item',{completed:item.status}]" v-for="item in todoListData" :data-todo-id="item.id" @click="statusChange" :key="item.id" v-show="item.isShow">

  3.         <div class="checkbox" :key="item.id+'1'">

  4.             <div class="i-active" v-if="!item.status"></div>

  5.             <div class="i-completed" v-if="item.status"></div>

  6.         </div>

  7.         <p :key="item.id+'2'">{{item.value}}</p>

  8.         <div class="delete" @click="deleteItem" :key="item.id+'3'">×</div>

  9.     </li>

复制代码
这个是我写的Vue动画Dom元素
然后下面是我写的对应过度动画钩子函数
  1. leaveHandel(e) {
  2.     this.todoListData[this.dealWithItemIndex].isShow = true
  3.                 },
  4.                 beforeEnterHandel(e) {
  5.     console.log('动画开始');
  6.     if (!this.todoListData[this.dealWithItemIndex]?.status) {
  7.         e.style.backgroundColor = '#fff'
复制代码

我的数据对象结构中拥有isShow属性,默认为true,因此元素可以显示;当我点击事件触发时,该属性会被改为false
对应的元素会被隐藏,触发leaveHandel函数,该函数会将isShow改为true
进而触发beforeEnterHandel,进入动画过渡,但是在 e.ontransitionend这个监听事件,无法进入执行
希望有好心的大佬能够帮我解答一下,十分感谢


回复

使用道具 举报

2

主题

1

回帖

24

积分

新手上路

积分
24
 楼主| 发表于 2022-9-24 16:38:04 | 显示全部楼层
上面的第二段代码不知道为什么写不进去,我写在这里
  1.                 leaveHandel(e) {
  2.                     this.todoListData[this.dealWithItemIndex].isShow = true
  3.                 },
  4.                 beforeEnterHandel(e) {
  5.                     console.log('动画开始');
  6.                     if (!this.todoListData[this.dealWithItemIndex]?.status) {
  7.                         e.style.backgroundColor = '#fff'
  8.                         e.style.transition = 'all 0s linear'
  9.                     } else {    // true
  10.                         e.style.backgroundColor = '#fe7345'     // 生效
  11.                         e.style.transition = 'all .5s linear'
  12.                     }

  13.                 },
  14.                 enterHandel(e, done) {
  15.                     if (this.todoListData[this.dealWithItemIndex]?.status) {  // true
  16.                         let step = 0
  17.                         console.log(step);      // 能打印 0
  18.                         e.ontransitionend = function () {       // 不能进入监听
  19.                             console.log(111);    // 不打印111
  20.                             step++
  21.                             if (step == 1) {
  22.                                 e.style.transform = 'rotate3d(1,0,0,45deg)'
  23.                                 e.style.transition = 'all .5s linear'
  24.                             } else if (step == 2) {
  25.                                 e.style.transform = 'rotate3d(1,0,0,0deg)'
  26.                                 e.style.transition = 'all .5s linear'
  27.                             } else {
  28.                                 done()
  29.                             }

  30.                             // }
  31.                         }

  32.                         // 改变样式
  33.                         e.style.backgroundColor = 'green'       // 生效
  34.                         e.style.transition = 'all .5s linear'

  35.                         console.log(e,e.ontransitionend);
  36.                         console.log('动画进行中');      // 正常打印
  37.                     }else{
  38.                         done()
  39.                     }

  40.                 },

  41.                 afterEnterHandel(e) {
  42.                     console.log('动画结束了');      //  正常打印
  43.                     e.ontransitionend = null
  44.                 }
复制代码
回复

使用道具 举报

3

主题

7

回帖

243

积分

中级会员

积分
243
发表于 2022-9-26 08:47:14 | 显示全部楼层
所以解决了么
回复

使用道具 举报

9

主题

37

回帖

151

积分

注册会员

积分
151
发表于 2022-9-27 17:52:05 来自手机 | 显示全部楼层
dealWithItemIndex 这是用来干嘛的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|粤嵌技术交流空间

GMT+8, 2025-7-7 15:58 , Processed in 0.708743 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表