Html5 移动端 触摸滑动事件

以下代码经过测试  没有问题 且可以循环滑动


<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>html5测试</title>
    <link href="Css/Index.css" rel="stylesheet" />
</head>
<body>
    <div id="Index" style="text-align: center; width: auto;">
        <img src="img/1.jpeg" class="imagestart" style="display: block;" data-id="1" />
        <img src="img/2.jpeg" class="imagestart" data-id="2" />
        <img src="img/3.jpeg" class="imagestart" data-id="3" />
    </div>
    <script src="/js/jquery-1.12.4.min.js"></script>
    <script>
        //初始化获取浏览器的屏幕的宽度
        var LoadWidth = parseInt($(window).width());
        //初始化触摸起点X轴
        var loadX = 0;
        //初始化触摸起点Y轴
        var loadY = 0;
        //初始化鼠标松开的X轴
        var MoveUp = 0;


        $(function () {
            //
            $(".imagestart").on('touchstart', function (e) {
                var id = e.originalEvent.targetTouches[0];
                //获取鼠标的起始位置x
                var x = id.pageX;
                //赋值起始位置x
                loadX = x;
                //点击时赋值鼠标起来的坐标 在移动的时候会更新这个变量
                MoveUp = x;
                //获取鼠标的起始位置y
                var y = id.pageY;
                loadY = y;
                $(this).css('position', 'fixed');
            })
            //


            //
            $(".imagestart").on("touchmove", function (e) {
                var id = e.originalEvent.targetTouches[0];
                //获取鼠标的每次移动位置x
                var x = id.pageX;
                MoveUp = x;
                //获取鼠标的每次移动位置y
                var y = id.pageY;
                var ThisLoad = $(this);var ddd = x - loadX;
                //移动元素
                ThisLoad.animate({ 'left': x - loadX + "px" }, 0);
                
                if ($(this).attr("data-id") == 3) {
                    //$(".imagestart").hide();
                    $(".imagestart").eq(0).show();
                } else {
                    $(this).next().show();
                }
            })
            //


            //
            $(".imagestart").on("touchend", function (e) {
                //当手指松开的时候  计算鼠标移动开始到结束 x轴变化多少
                var MoveX = loadX - MoveUp;
                if (MoveX<0) {
                    MoveX = MoveUp - loadX;
                }
                
                $(".imagestart").css("left", "0px");
                //如果移动的x轴  大于浏览器宽度的3/10 则换图片
                if (MoveX / LoadWidth > 0.4) {
                    if ($(this).attr("data-id") == 3) {
                        //隐藏所有
                        $(".imagestart").hide();
                        //清空元素的style
                        $(".imagestart").removeAttr("style");
                        //让第一个显示
                        $(".imagestart").eq(0).css("display", "block");
                    } else {
                        //隐藏当前
                        $(this).css("display", "none");
                        //显示下一个元素
                        $(this).next().show();
                    }


                } else {
                    //如果移动的位置屏幕的40%小于  则图片返回到初始的位置
                    $(this).animate({ "letf": "0px" },0);
                }
                //恢复初始坐标
                loadX = 0;
                //恢复鼠标松开坐标
                MoveUp = 0;


            })
            //


        })
    </script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值