在我想要做一个一行展示 4 张图片同时进行滚动轮播,轮播的同时第一、三中照片还会变大小。一开始想要不借助 js库来实现,后来发现轮播一张图很容易,但是一行展示多张图片并每次轮播一张的时候我发现我毫无思绪,而且也没有足够的时间给我去思考,最后采取了使用 vue-awesome-swiper 。
在给每个 swiper-item 添加点击事件的时候有个坑。
<swiper class="swiper-container" :options="swiperOption" ref="mySwiper">
<swiper-slide class="swiper-slide" v-for="(item, index) in otherModules" :key="item.id">
<img :src="item.url" :data-index="inex" />
</swiper-slide>
</swiper>
我一开始是直接在 swiper-slide 上加点击事件,后来发现 vue-awesome-swiper 会自动给轮播前后新增元素,而新增的元素不会带上你添加的点击事件。
好在 vue-awesome-swiper 有提供 click 事件,但是坑就在这里,这个 click 事件会有延迟,导致获取到的 e.target 或许不是你当前点击的元素,所以最后根据官方文档推荐用 tap 方法替代,这样就不存在延迟现象了。