移动端自由移动元素位置

7 篇文章 1 订阅

HTML部分

        <div class="a1 aa" id="img0"><img src="images/a1.png"></div>
        <div class="a2 aa" id="img1"><img src="images/a2.png"></div>
        <div class="a3 aa" id="img2"><img src="images/a3.png"></div>
    <style>
        *{border: 0;margin:0;padding: 0;}
        body{max-width: 720px;width: 100%;height: 100%;position: absolute;}
        img{width: 100%;}
        .aa{width: 30%;left: 35%;position: absolute;}
        .a1{top: 10%;}
        .a2{top: 30%;}
        .a3{top: 50%;}
    </style>

JS

    var block;
    for(var i = 0;i<3;i++){
        Aaron(i);
    }
    function Aaron(i){
        var block = document.getElementById("img" + i);
        var oW,
            oH;
        //绑定touchstart事件
        block.addEventListener("touchstart", function(e) {
        var touches = e.touches[0];//touches当前跟踪的触摸操作的Touch对象的数组
        console.log(touches);
        oW = touches.clientX - block.offsetLeft;
        oH = touches.clientY - block.offsetTop;
        //阻止页面的滑动默认事件
        document.addEventListener("touchmove",defaultEvent,false);
        },false)
        block.addEventListener("touchmove", function(e) {
            var touches = e.touches[0];
            var oLeft = touches.clientX - oW;
            var oTop = touches.clientY - oH;
            if(oLeft < 0) {
                oLeft = 0;
            }
            else if(oLeft > document.documentElement.clientWidth - block.offsetWidth) {
                 oLeft = (document.documentElement.clientWidth - block.offsetWidth);
            }
            block.style.left = oLeft + "px";
            block.style.top = oTop + "px";
        },false);
        block.addEventListener("touchend",function() {
            document.removeEventListener("touchmove",defaultEvent,false);
        },false);
        function defaultEvent(e) {
            e.preventDefault();
        }
    }

注释部分

1、触摸事件:

touchstart 当手指触摸屏幕时候触发,即使已经有一个手指放在屏幕上也会触发
touchmove 当手指在屏幕上滑动时候连续触发,可以用preventDefault阻止
touchend 当手指从屏幕上移开时候触发
touchcancle 当系统停止跟踪触摸时候触发

2、属性:

每一个触摸事件的event对象常见属性:

bubbles
cancelable
view
clientX
clientY
screenX
screenY
detail
altKey
shiftKey
ctrlKey
metaKey
还包含3个用于跟踪触摸的属性:

touches 当前跟踪的触摸操作的Touch对象的数组
targetTouchs 特定于事件目标的Touch对象的数组
changeTouches 自上次触摸以来发生了什么改变的Touch对象的数组
每一个Touch对象包含下列属性:

clientX触摸目标在视口中的x坐标
clientY触摸目标在视口中的y坐标
pageX触摸目标在页面中的x坐标
pageY触摸目标在页面中的y坐标
screenX触摸目标在屏幕中的x坐标
screenY触摸目标在屏幕中的y坐标
target触摸的DOM节点目标
identifier标识触摸的唯一ID
触摸事件的顺序:

touchstart
mouseover
mouseover(一次)
mousedown
mouseup
click
touchend

浏览器支持:

iOS Safari
Android版Webkit
LG专有的OS中的Phantom

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值