当前位置: 首页 > 知识库问答 >
问题:

前端 - transition-group 包裹的过渡组件,增加数据时,元素没有进入动画?

王彭薄
2024-01-03

transition-group 包裹的过渡组件,当删除一个元素,同时在这个删除位置上写入多个元素的时候:

                // 提取当前所有图标,进行释放                let onk = this.$util.deepClone(this.navLista)                // 先提取,后释放                let dnum = this.findIdIcon(this.rightClickValue.id)                let delFolder = onk[this.aindex].children.splice(dnum,1)[0]                for(let i = delFolder.children.length-1;i >= 0; i--){                    onk[this.aindex].children.splice(dnum,0,delFolder.children[i])                }                this.$store.commit('navListModiy', onk)

元素没有进入动画,直接就是enter-to的末位css

.flip-li-enter-active {    transition-duration: .3s;}.flip-li-leave-active {    position: absolute;}.flip-li-move {    transition-duration: 0.28s;}.flip-li-enter-to {    opacity: 1;    transform-origin: center;    transform: scale(1);    // transition-duration: .3s;}// 单个删除.flip-li-enter,.flip-li-leave-to {    opacity: 0;    transform-origin: center;    transform: scale(.1);    transition-duration: .3s;}

就是图标加入的时候没有从flip-li-enter这个css过渡到.flip-li-enter-to,所以没有动画,同时.flip-li-enter-to这个类名也没有消失,一直在dom上,vue2环境求解啦,谢谢啦

在看文档,appear 这种属性设置也没有用,不知到是加入的时候是不是存在了什么问题

共有1个答案

盖博简
2024-01-03

从你的描述和代码中,我看到你在使用 Vue 的 <transition-group> 组件来处理元素的过渡动画。但是,你遇到的问题是,当你在删除一个元素并在其位置上添加多个新元素时,新元素没有从 .flip-li-enter 类过渡到 .flip-li-enter-to 类,因此没有动画效果。同时,.flip-li-enter-to 这个类名并没有从 DOM 上消失。

问题可能出在 transition-groupname 属性上。这个属性是用来指定过渡的类名的前缀的。如果没有设置 name 属性,那么 Vue 会使用组件的标签名作为前缀。然而,在你的例子中,你似乎没有设置 name 属性,所以 Vue 可能会使用默认的前缀,这可能与你预期的类名前缀不匹配。

你可以尝试在你的 <transition-group> 标签中添加 name 属性,并将其设置为 "flip",这样你的过渡类名就会有一个明确的前缀,例如:

<transition-group name="flip">  <div v-for="item in list" :key="item.id">    <!-- Your content here -->  </div></transition-group>

然后,在你的 CSS 中,你可以使用这个前缀来定义你的过渡类,例如:

.flip-enter-active {  transition: opacity .3s, transform .3s;}.flip-leave-active {  position: absolute;}.flip-move {  transition: transform .28s;}.flip-enter-to {  opacity: 1;  transform: scale(1);}

另外,你需要确保你的 v-for 指令中的 :key 是唯一的。这是 Vue 的一个最佳实践,可以帮助提高渲染的性能,并确保正确的过渡效果。在你的例子中,你可以使用每个项目的 id 作为 key

 类似资料:
  • 本文向大家介绍vue 组件中使用 transition 和 transition-group实现过渡动画,包括了vue 组件中使用 transition 和 transition-group实现过渡动画的使用技巧和注意事项,需要的朋友参考一下 前言 记一次vue 组件中使用 transition 和 transition-group 设置过渡动画,总结来说可分为分为 name 版, js 钩子操作

  • Vue 提供了transition的封装组件,在下列情形中,可以给任何元素和组件添加 entering/leaving 过渡 条件渲染 (使用v-if) 条件展示 (使用v-show) 动态组件 组件根节点 这里是一个典型的例子: <div id="demo"> <button v-on:click="show = !show"> Toggle </button> <tran

  • 问题内容: 是否可以在不使用Javascript的情况下在页面加载时使用CSS3过渡动画? 问题答案: 您 可以 在页面加载时运行 CSS 动画,而无需使用任何JavaScript;您只需要使用 CSS3关键帧即可 。 让我们看一个例子… 这是仅使用 CSS3 的导航菜单滑入位置的演示: 分解… 这里的重要部分是关键帧动画,我们称之为… …这基本上是说:“开始时,标题将离开屏幕的左侧边缘的整个宽度

  • 问题内容: 我找不到在新创建的dom元素上使用css过渡的方法。 假设我有一个空的html文档。 我也有这个CSS 和这个js 但是,正如您在http://jsfiddle.net/gwxkW/1/上看到的那样,单击该元素会立即显示。 如果我尝试在a中设置类,我 通常会 找到结果,但是对我来说,这似乎更像是javascript和CSS引擎之间的竞赛。有没有要听的特定事件?我尝试使用,但无法正常工作

  • https://www.youtube.com/watch?v=G685JsiQM3E 这个视频里设置后载入页面就有放大效果.但我这边试了半没有这个效果.差在哪里?mac和windows?

  • 问题内容: 我试图创建一种方法来检查数组中是否增加了元素。如果所有元素按升序排列,则应返回True。当我比较arr [i + 1]时,我得到了一个界外异常。关于如何使它起作用的任何想法。 问题答案: 我建议你这样写你的方法 我会帮你的 返回正确的结果(当您不应该返回true时) 考虑超越 避免不必要的循环