推荐使用swiper插件,我这里这么做是最近在nuxt项目上使用时出现了一个小BUG(效果其实没问题,swiperOptions传入的配置项slidesPerView是3,但是在跳转其他页面的时候,第一张图的宽度会瞬间占满原来三张图的位置,图片被拉伸了,猜测可能是因为服务端渲染的关系,传入的配置想丢失了),没法解决,只好自己手动造轮子了。
大致思路:开始是想着用drag事件,但是在这里不太适合。改成了鼠标按下后添加鼠标移动事件,取pageX算出相对的移动距离给到transform移动的距离,最大可移动距离做下限制判断,超出的时候顺带加上过渡的时间,即可达到回弹的效果。
<template>
<div class="img-list">
<div ref="contentList" class="list-item" @mousedown.prevent="contentListMouseDown"
:style="`transform: translateX(${count}px);transition-duration:${transitionTime}s`">
<img :src="item.url" @mousedown.passive="" v-for="(item, index) in images" :key="index" alt=""
draggable="false" :style="