2

我有一个脚本允许用户在 iOS 上的屏幕上拖动一个 div,就像现在一样,当你开始拖动一个 div 时,它会使可拖动点成为中心。是否有可能在用户触摸的任何地方提出这一点?

代码如下所示:

    xPos = drag.offsetWidth / 2;
    yPos = drag.offsetHeight / 2;
    drag.addEventListener("touchmove", function() {
        event.preventDefault();
        $(this).css({
            "left" : event.targetTouches[0].pageX - xPos + "px", 
            "top" : event.targetTouches[0].pageY - yPos + "px",
            "z-index" : "1000"
        });
        $("div").not(this).css("z-index", "1"); 
        $("div[id]").each(function() {
            var id = $(this).attr("id");
            localStorage.setItem(id + "-z","1");
        });     
    });

无论如何我可以做到这一点,以便偏移量与用户的手指远离盒子边缘的距离有多远?


我认为以下可能有效,但似乎没有,它所做的只是让它抖动:

$(this).css({
"left" : event.targetTouches[0].pageX - parseInt($(this).css("left"), 10) +  "px", 
"top" : event.targetTouches[0].pageY  - parseInt($(this).css("top"), 10) +  "px",
});
4

1 回答 1

0

弄清楚了。经过测试,以下仅产生了父级左侧或顶部的像素数。

event.targetTouches[0].pageX - $(this).offset().left

诀窍是减去FROM event.targetTouches[0].pageX,这是手指距屏幕边缘的像素数。

因此,完成的代码如下所示:

drag.addEventListener("touchstart", function() {
    left = event.targetTouches[0].pageX - $(this).offset().left;
    top = event.targetTouches[0].pageY - $(this).offset().top;
});
drag.addEventListener("touchmove", function() {
    $(this).css({
        "left" : event.targetTouches[0].pageX - left + "px", 
        "top" :  event.targetTouches[0].pageY - top + "px",
    });
});
于 2012-09-09T15:10:08.267 回答