javascript - 保存拖动元素的位置 - JavaScript

标签 javascript jquery

我正在尝试创建一个模板,用户可以在其中在房间中拖动可编程物联网项目并保存模板。正如您将在下面的代码中看到的,房间只是一个带有用户已上传到服务器的背景图像的 div 。当用户稍后再次打开页面时,我希望能够将拖动的项目加载到其保存的位置。我了解如何保存数据,但我不知道如何实际计算该项目应以多浏览器兼容格式显示在屏幕上的位置。我使用 jQuery UI 在房间内拖动 IOT 设备。

这是我的 HTML:

<div class="container">
<div class="row">
    <div class="col-md-12">
        <div id="room" class="room" style="background-image:url('<%= url_for(@room.background) %>')">
            <div class="device draggable">
                <div class="content md">

                </div>
            </div>
        </div>
    </div>
</div>
</div>

还有我的 jQuery:

$(function() {
    $( ".draggable" ).draggable();
});

最佳答案

您可以在拖动事件中获取xy坐标并将其保留,如下所示。

$(".draggable").draggable({
    containment: "parent",
    drag: function () {
        var $this = $(this),
            x = this.offsetLeft / (body.clientWidth - $this.width()),
            y = this.offsetTop / (body.clientHeight - $this.height());
    }
});

当用户再次打开页面时,您可以为元素分配 lefttop 属性。

document.getElementsByClassName("draggable").style.left = (body.clientWidth - $shape.width()) * x + "px";
document.getElementsByClassName("draggable").style.top = (body.clientHeight - $shape.height()) * y + "px";

这里,body 表示window.document.body。这就是我在想要保留位置时计算位置所做的事情,它适用于所有场景,例如浏览器(如果恢复或最大化)以及所有浏览器。

关于javascript - 保存拖动元素的位置 - JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52251180/

相关文章:

javascript - jQuery:动态更新 N 个最新值的列表

javascript - 使用 .each 迭代具有相同类的 html 元素

javascript - 在 Meteor v1.7.0.3 中添加和使用 jQuery 插件

jquery - 单击 Accordion 标题时清除内容

javascript - jQuery/JavaScript - 使用 Ajax 加载 iframe 会减慢页面速度

javascript - jQuery Sortable 没有获取 ui.draggable id

javascript - 拦截按钮回发的最佳方式

javascript - 右大括号和圆括号

javascript - 如何将 kendo.ui.RangeSlider 重置为初始值?

javascript - AngularJS - 设置动态键名