js如何实现轮播N张连续图片实现gif动图效果?

后台接口获取 100张图片 存到一个imageList里面
在一个<img>标签中 连续播放这100个图片实现类似gif的动画效果

用setInterval 间隔100 给img的src 重新复制?


    imageList.map(item => {
      setTimeout(() => {
        this.src = item;
      }, 0)
    })
阅读 1.4k
2 个回答
<template>
  <view>
    <image :src="currentImage" class="image" />
    <button @click="pauseCarousel">暂停</button>
    <button @click="resumeCarousel">继续</button>
  </view>
</template>

<script>
export default {
  data() {
    return {
      currentIndex: 0,
      imageList: [
        'url1.jpg',
        'url2.jpg',
        'url3.jpg',
        // ... 
      ],
      intervalId: null
    };
  },
  computed: {
    currentImage() {
      return this.imageList[this.currentIndex];
    }
  },
  methods: {
    updateImage() {
      this.currentIndex = (this.currentIndex + 1) % this.imageList.length;
    },
    startCarousel() {
      if (!this.intervalId) {
        this.intervalId = setInterval(this.updateImage, 100);
      }
    },
    pauseCarousel() {
      clearInterval(this.intervalId);
      this.intervalId = null;
    },
    resumeCarousel() {
      this.startCarousel();
    }
  },
  mounted() {
    this.startCarousel();
  },
  destroyed() {
    this.pauseCarousel();
  }
};
</script>

<style>
.image {
  width: 100%;
  height: auto;
}
</style>

还有一个思路是直接用拿到的图片合成一个gif图片, 然后放上去, 或这个后台生成一个gif也行
前端可以用这个组件:

https://jnordberg.github.io/gif.js/
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题