javascript - Vue.js:过渡组动画不起作用

标签 javascript css vue.js transition vuejs-transition-group

我有一个 slider 写成过渡组组件:

<template>
 <div class="carousel-view">
  <transition-group name="carousel-transition" class="carousel" tag="div">
   <div v-for="(slide, index) in slides"
       :key="index"
       class="slide">
    <div>{{ slide.status }}</div>
    <img :src="slide.img" />
   </div>
  </transition-group>
 <div class="carousel-control">
   <button @click="goToPrevious" class="button button__main">Back</button>
   <button @click="goToNext" class="button button__main">Next</button>
  </div>
 </div>
</template>

在我的 <style>我有这个:

<style lang="scss" scoped>
.carousel {
 overflow: hidden;
 display: inline;
 height: 100%;
 width: 900px;
 min-width: 200px;
 text-align: center;
}
.slide {
 display: inline-block;
 position: relative;
 z-index: 10;
}
.slide:first-of-type, .slide:last-of-type {
 opacity: 0.5;
 position: absolute;
}
.slide:first-of-type {
 right: 50%;
 z-index: 5;
}
.slide:first-of-type {
 right: 50%;
 z-index: 5;
}
.slide:last-of-type {
 left: 50%;
 z-index: 5;
}
.carousel-transition-move {
  transition: transform 1s;
}
</style>

我的方法中有两个函数可以让我的幻灯片移动:

goToNext() {
  const firstSlide = this.slides.shift();
  this.slides = this.slides.concat(firstSlide);
},
goToPrevious() {
  const lastSlide = this.slides.pop();
  this.slides = [lastSlide].concat(this.slides);
},

我所有的幻灯片目前只是组件 data() 中的一个硬编码数组三个对象包含一个图像和一些状态。现在我无法为幻灯片制作动画,也不能在单击调用这些功能的按钮后,也不能设置间隔。我究竟做错了什么?

最佳答案

显然,问题是您使用的是 :key="index",而 vue 在控制台中为此提示。

[Vue tip]: Do not use v-for index as key on children, this is the same as not using keys.

因此我将 :key 更改为 slide.status 并且它起作用了。

这是工作 JsFiddle

希望这对您有所帮助!

关于javascript - Vue.js:过渡组动画不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55340338/

相关文章:

javascript - 如何在 StackBlitz 上安装 npm 包?

javascript - 如何在 angularjs 中按 id 数组对对象列表进行排序?

html - 固定页脚高度

javascript - 我如何让一个 div 出现在它的容器外面,并滚动,同时保持溢出在它的容器上

javascript - 如何通过vue js中的slug(也存在于json文件中)从我的json文件中获取文章内容?

javascript - 将 jQuery 存储在变量中

javascript - 使用 ES6 + Flow 代替 TypeScript

html - 网站在 Mac 上显示不同

javascript - 使用 VueJS 上传和查看输入文件

vue.js - 如何让 ESLint 理解 vue pug 模板中使用的函数?