移动端原生无缝滑动

布局

  • 包裹层相对定位
  • ul绝对定位,后续通过调整left值达到移动效果
  • li浮动

原理

  • 基础布局结果
    这里写图片描述

  • 当手指触摸黄色区域1时,布局如下
    这里写图片描述
    -当手指触摸蓝色区域3时,布局如下
    这里写图片描述

  • 通过瞬间改变ul的left值,此时达到视觉上的左右滑动都无缝

函数


        function start(ev){
            let e = ev.changedTouches[0];

            disX = e.pageX;  //记录当前X坐标
            list.style.transition = 'none';

            let num = Math.round(list.offsetLeft / w);  //计算当前是第几幅图片
            //首尾处理
            if(num == 0){
                num = a.length;
                list.style.left = (-num*w)+'px';
            }

            if(-num==len*2-1){
                num = a.length-1;
                list.style.left = (-num*w)+'px';
            }


            listL = list.offsetLeft;

        }

        function move(ev){
            let e = ev.changedTouches[0];
            list.style.left = e.pageX - disX + listL + 'px';  //相比上次移动的距离+原先的距左距离
        }

        function end(ev){
            //超过图片一半则切换图片
            let num = Math.round(list.offsetLeft / w); //计算当前应该显示的图片
            list.style.transition = '1s';  //平滑过渡
            list.style.left = num*w + 'px'; //更新ul位置

            a[idx].className = '';
            a[-num%len].className = 'active';  //更新圆点激活状态
            idx = -num%len;
        }

个人链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值