在两个不同大小的移动设备上返回相同的 x 和 y 坐标

Posted

技术标签:

【中文标题】在两个不同大小的移动设备上返回相同的 x 和 y 坐标【英文标题】:returning the same x and y co-ordinates on two differently sized mobile devices 【发布时间】:2017-11-16 12:18:33 【问题描述】:

我使用的是 .net 4.5。 javascript 中有很多关于 x 和 y 坐标的信息,例如:

How do I get the coordinate position after using jQuery drag and drop?

我有一个相当简单的网络应用程序,它面向移动设备,其中有一些拖放功能并存储了 x 和 y 坐标。 基本上会有一个房间的背景图像,您在一个移动设备(用户 1)上拖放房间中的一件家具,x 和 y 坐标存储在服务器上,这件家具就会出现在另一台移动设备(用户 2)上,无论屏幕大小如何,理想情况下都处于相同位置。

我认为最好的处理方法就是将 div 容器的宽度和高度设置为 320 x 400,并限制拖放到该容器。然后屏幕尺寸是否为 600 x 800、500 x 700 等在另一个人的设备上无关紧要,并且 x 和 y 坐标相对于 320 x 400 div 容器将始终相同。但是,唉,我不能让它工作。

任何提示都会引起轰动。

css
    .imgContainer 
        height: 400px;
        width: 320px;
    

    img 
        position: relative;
    


View
    <div class="imgContainer">
        <img src="~/Content/Images/image.jpg" class="img-responsive" />

        <img src="~/Content/Images/chair.png"  />
    </div>

【问题讨论】:

你必须记住你的 div 可能有的偏移量。坐标始终计算为文档坐标。您提到的问题的第二个答案就是一个很好的例子。您必须从报告给代码的坐标中减去拖放区的偏移量。 谢谢。但是如果我创建一个 div 或 canvas 说 320 x 400 左上角不会有坐标(0,0)吗? 如果没有 CSS 且没有其他内容,您的假设是正确的。 【参考方案1】:
   // Mouse co-ordinate position will get using onStart Fn.

    function onStart(evt, ui)
        ui.position.top=Math.round(ui.position.top);
        ui.position.left=Math.round(ui.position.left);
    

   // After dropping will get using Dragged object positions from onDrop Fn.

    function onDrop(evt, ui)
        left = ui.draggable.css('left');
        top = ui.draggable.css('top');
    console.log(left, top);

    

   // You can Restrict the container using containment parent.. 

    $( ".selector" ).draggable(
      containment: "parent"
    );

【讨论】:

以上是关于在两个不同大小的移动设备上返回相同的 x 和 y 坐标的主要内容,如果未能解决你的问题,请参考以下文章

为啥 new Date(dateString) 在具有完全相同输入的不同设备上返回两个不同的日期? [复制]

Tensorflow:DecodeJpeg方法为桌面和移动设备提供相同图像的不同像素值

两个对象值相同(x.equals(y)==true),但却可有不同的hashcode这句话对吗?

matplotlib 错误:x 和 y 的大小必须相同

Pyqtgraph:在同一个图形窗口中实时绘制两个图形相同的X轴但两个不同的Y轴方向相反

JavaScript 排序算法