Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript从鼠标位置拖动?_Javascript_Jquery - Fatal编程技术网

Javascript从鼠标位置拖动?

Javascript从鼠标位置拖动?,javascript,jquery,Javascript,Jquery,我有一个脚本,允许用户在iOS屏幕上拖动一个div,现在,当你开始拖动一个div时,它会使可拖动的点成为中心。在用户接触的任何地方都可以指出这一点吗 代码如下所示: xPos = drag.offsetWidth / 2; yPos = drag.offsetHeight / 2; drag.addEventListener("touchmove", function() { event.preventDefault(); $(this).

我有一个脚本,允许用户在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");
        });     
    });
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",
    });
});
我是否可以使偏移量与用户的手指距离框的边缘有多远

我认为下面的方法可能有效,但它似乎不起作用,它所做的只是导致它抖动:

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

我明白了。测试后,以下仅从父对象的左侧或顶部生成像素数

event.targetTouches[0].pageX - $(this).offset().left
诀窍是从event.targetTouches[0].pageX中减去它,这是指手指距离屏幕边缘的像素数

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

    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");
        });     
    });
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",
    });
});

我明白了。测试后,以下仅从父对象的左侧或顶部生成像素数

event.targetTouches[0].pageX - $(this).offset().left
诀窍是从event.targetTouches[0].pageX中减去它,这是指手指距离屏幕边缘的像素数

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

    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");
        });     
    });
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",
    });
});

Modernizer是一种伟大的、轻量级的方法来进行各种功能检测。你能举个例子@coder吗?Modernizer是一种伟大的、轻量级的方法来进行各种功能检测。你能举个例子@coder吗?