zoukankan      html  css  js  c++  java
  • 移动端图片滑动

    这是一个移动端的图片滑动,因为移动端的滑动带有弹性,所以pc端的滑动在移动端

    很生硬。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport">
        <style>
        body{
            margin: 0;
        }
        body,html{
            width: 100%;
            height: 100%;
        }
        ul,li{
            padding: 0;
            margin: 0;
            list-style: none;
        }
        #container{
            width: 100%;
            position: relative;
            overflow-x:hidden;
            height: 156px; 
        }
        #imgBox{
            position: absolute;
            top: 0;
            left: 0;
        }
        #imgBox li{
            float: left;
        }
        </style>
        <script src="jquery.js"></script>
        <script>
        $(function(){
            switchImg("imgBox");
        })
    
        function switchImg(id){
            /*初始化*/
            var $imgBox=$("#"+id);
            var $img=$("img",$imgBox);
            $img.css("width",$("body").width());
            $imgBox.css("width",$img.width()*$img.length);
            /*获取图片width*/
            var imgWidth=$img.width();
            $imgBox[0].addEventListener("touchstart",myStart);
            var startPos=0,imgPos=0,num=0,startTime=0;
            function myStart(ev){
                startPos=ev.changedTouches[0].pageX;
                imgPos=parseFloat($imgBox.css("left"));
                //获取时间戳,单位毫秒
                startTime=Date.now();
                $imgBox[0].addEventListener("touchmove",myMove);
                $("body")[0].addEventListener("touchend",myEnd);
            }
            function myMove(ev){
                var movePage=ev.changedTouches[0].pageX;
                var moveDistance=(movePage-startPos)/3+imgPos;
                $imgBox.css("left",moveDistance);
            }
            function myEnd(ev){
                $("body")[0].removeEventListener("touchend",myEnd);
                $imgBox[0].removeEventListener("touchmove",myMove);
                var endPos=ev.changedTouches[0].pageX;
                var distance=endPos-startPos;
                if(Math.abs(distance)>$("body").width()/2||(Date.now()-startTime<100&&distance!=0)){
                    if(distance<0){
                    num=++num>$img.length-1?$img.length-1:num;
                    }else{
                        num=--num<0?0:num;
                    }
                }
                $imgBox.animate({"left":-num*$("body").width()},400);    
            }
        }
        </script>
    </head>
    <body>
        <!-- 编程就是和生活一样,只要观察生活中的细节,其实你就会发现生活很多逻辑和编程逻辑吻合 -->
        <!-- ios的滑屏 -->
        <!-- 1、使用到touchstart/touchmove/touchend,拖拉拽写法差不多 -->
        <!-- 2、如果想出现拖的位置和移动位置不符,只要移动位置减少即可,如除以3 -->
        <!-- 3、touchend是关键,图片移动需要它去判断,如ios手指抬起时所触发的各种可能,弹回,快速抬起的切换图片(使用时间确定速度)
        ,手指缓慢移动需要移动一半的屏幕才切换图片等等,还有切换到首张或末尾时弹回的
        还有使用运动函数,如jquery-》animate或别的库的运动函数
        还有解除touchmove的事件函数,
        还有event对象获取位置是event.changeTouches[0].pageX
        event.changeTouches获取手指列表和其操作。
         -->
         <div id="container">
             <ul id="imgBox">
                 <li><img src="img/1.jpg" alt=""></li>
                 <li><img src="img/2.jpg" alt=""></li>
                 <li><img src="img/3.jpg" alt=""></li>
                 <li><img src="img/4.jpg" alt=""></li>
             </ul>
         </div>
    </body>
    </html>

  • 相关阅读:
    <整理> 在Bash中添加个人定制的命令
    <整理> linux常用命令及工具
    论文分享:目标检测-YOLO
    Siamese Attentional Keypoint Network for High Performance Visual Tracking--论文笔记
    ubuntu 相关软件设置
    anoconda 神经网络 相关操作
    转载:决策树算法梳理
    转载:XGBOOST算法梳理
    XGB算法梳理
    决策树算法梳理
  • 原文地址:https://www.cnblogs.com/zhangzhicheng/p/6624505.html
Copyright © 2011-2022 走看看