Vue3实现图片自动切换效果
如何实现像 fortnite.gg 商店页面那样的图片自动切换效果?我们看到了该网站利用两个具有“animation”类名的盒子进行切换,并调整了高度。然而,我们遇到的困难是我们每个商品的图片数量不固定。我们需要一个更通用的解决方案。
解决方案:使用动画蒙板
我们可以使用动画蒙板来处理这种情况:
一位掘金用户(飞叶_前端)的文章为这种方法提供了启发:https://codepen.io/veLve-L/pen/xxBdNWW
示例:
<template> <div class="shop-section" v-for="(items, index) in shopStore.shopList" :key="items"> <h2 class="section-name">{{ index }}</h2> <div :class="'shop-card ' + index" v-for="item in items" @click="preview(item)" :style="{ transform: 'translate3d(0, 0, ' + index * 100 + 'px)', height: item.image.length > 1 && '200px', }" > <div v-for="img in item.image" :key="img" :style="{ position: 'absolute', zIndex: img.id === 0 ? 2 : 1, mask: img.id === 0 ? 'maskPath' + item.id : 'none', }" > <img :src="img.url" alt="" /> </div> <div v-if="item.image.length > 1" class="maskPath" id="maskPath{{ item.id }}"></div> </div> </div> </template> <script> // ...省略动画蒙板路径定义,根据实际情况自定义 </script>