Vue中使用原生js实现轮播图滑动效果

1.在视图层模板里面绑定touchstart和touchend事件

        <div class="tuWap" @touchstart="touchStart" @touchend="touchEnd">
          <div class="zuoCaidan">
            <img src="./images/biaoti.png" alt="" />
          </div>
          <div class="youceBig">
            <div class="youce">
              <img src="./images/gongzhengqian.png" alt="" />
              <img src="./images/renshiqian.png" alt="" />
              <img src="./images/bianjieqian.png" alt="" />
            </div>
          </div>
          <div class="fenyeqi">
            <div class="dangqianYe"></div>
          </div>
        </div>

2.事件方法:

     data() {
        return {
            startX: '', //鼠标开始坐标
            endX: '',   //鼠标结束坐标
            index:0,    //当前轮播图下标 
        }
      },
        
      methods:{
          touchStart(e) {
            this.startX = e.touches[0].clientX;
        },
        touchEnd(e){
            this.endX = e.changedTouches[0].clientX;
            // 在滑动超过一定的距离时再切换题目
            if (Math.abs(this.endX - this.startX) < 10) return;
            // 判断,向左还是向右
            if (this.endX > this.startX) { //向左
              if (this.index - 1 >= 0) this.index-=1;
            } else {  //向右
              if (this.index + 1 < 3) this.index+=1;
            }
            // 当前平移距离
            let pianyiX = -30 * this.index;
            // 当前分页器按钮位置
            let fenyeIndex=30 * this.index
            document.getElementsByClassName('youce')[0].style.transform = `translateX(${pianyiX}vw)`;
            document.getElementsByClassName('dangqianYe')[0].style.marginLeft = `${fenyeIndex}%`;
        }
      
      }

 

posted @ 2022-07-28 14:30  李云蹊  阅读(568)  评论(0编辑  收藏  举报