我已经阅读了this official篇关于Vuejs动画的文档.但使用它,我只能使元素随着淡入淡出和持续时间的不同而出现/消失.

<div id="demo">
  <button v-on:click="show = !show">
    Toggle
  </button>
  <transition name="fade">
    <p v-if="show">hello</p>
  </transition>
</div>


.fade-enter-active, .fade-leave-active {
  transition: opacity .5s
}
.fade-enter, .fade-leave-to /* .fade-leave-active in <2.1.8 */ {
  opacity: 0
}

如何使用Vuejs动画创建滑动效果?比如here号.可能吗?请提供一些示例代码.

推荐答案

你完全可以用VueJS做到这一点.

这里需要注意的重要一点是,我们将image元素包装在for循环中,以强制销毁元素,因为否则您的元素将不会从DOM中删除,也不会转换(虚拟DOM).

为了更好地理解VueJS中的转换,建议您查看getting started guide - transition section.

new Vue({
  el: '#demo',
  data: {
    message: 'Click for slide',
    show: true,
    imgList: [
        'http://via.placeholder.com/350x150',
      'http://via.placeholder.com/350x151',
      'http://via.placeholder.com/350x152'
    ],
    currentImg: 0
  },
  mounted() {
    setInterval(() => {
        this.currentImg = this.currentImg + 1;
    }, 3000);
  }
})
#demo {
  overflow: hidden;
}

.slide-leave-active,
.slide-enter-active {
  transition: 1s;
}
.slide-enter {
  transform: translate(100%, 0);
}
.slide-leave-to {
  transform: translate(-100%, 0);
}

.img-slider{
  overflow: hidden;
  position: relative;
  height: 200px;
  width: 400px;
}

.img-slider img {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right:0;
}
<!DOCTYPE html>
<html>
  <head>
    <title>VueJS 2.0 - image slider</title>
    <link rel="stylesheet" href="style.css">
  </head>

  <body>
    <div id="demo">
      <button v-on:click="show = !show">
        Toggle
      </button>
      <transition name="slide">
        <p v-if="show">{{message}}</p>
      </transition>
      <h3>
        Img slider
      </h3>
      <transition-group tag="div" class="img-slider" name="slide">
      <div v-for="number in [currentImg]" v-bind:key="number" >
        <img :src="imgList[Math.abs(currentImg) % imgList.length]"/>
      </div>
      </transition-group>
     </div>
    <script src="https://unpkg.com/vue/dist/vue.min.js"></script>
    <script src="script.js"></script>
  </body>

</html>

Vue.js相关问答推荐

Vue 3 需要 main.js 中的文件

vuejs:在确认提示之前更改 HTML

Shopware 6,使用 vue-test-utils 进行Jest 测试:渲染模板上的意外行为

绑定事件在渲染函数中不起作用

Vuex:如何等待动作完成?

使用 jquery-chosen 插件更新 vuejs 模型值

为什么 Vue 路由/Webpack 开发服务器现在在页面刷新时显示无法获取/路径?

使用 vue.js 的 axios 预检失败错误 301

vuejs中通过变量动态调用方法

如何将项目推送到 Vuejs 中数据对象的数组中? Vue 似乎没有关注 .push() 方法

了解 Nuxt.js 中的State状态和Getters:Getters不起作用

emit更新数组不起作用

使计算的 Vue 属性依赖于当前时间?

标签中的 href 赋值

在子元素 vueJS.2 之间切换active类

从 vuex 存储访问 $vuetify 实例属性

在 Vuejs 中放置 firebase.auth().onAuthStateChanged() 的位置

如何在布局中使用组件?

如何在 Vue 数据对象中运行函数?

Vue-i18n - 无法读取未定义的属性配置