使用 HTML5 原生拖放时如何约束移动?

Posted

技术标签:

【中文标题】使用 HTML5 原生拖放时如何约束移动?【英文标题】:How to constrain movement when using HTML5 native drag and drop? 【发布时间】:2012-02-23 01:22:27 【问题描述】:

各种 javascript 库(例如 jQuery UI)提供拖放交互,您可以在其中 constrain the movement 将拖动的元素放到单个轴或特定区域内。

使用原生的html5 drag and drop API 可以实现这种事情吗?

【问题讨论】:

链接到 w3schools 应该被视为重罪。 HTML5: Drag/drop on X-axis and without fade?的可能重复 我知道这是一篇旧帖子...但我通过在dragstart 上创建一个克隆元素来解决这个问题,隐藏原始元素,然后使用dragover 事件设置克隆的位置 - 其中它可以被约束。与使用mousemove 没有太大区别。这比完全重写拖放要容易 - 我相信很多人都有。 嗨@mseifert 你有这个示例代码吗?我也在尝试移动仅粘在 x 轴或 y 轴上的拖动对象 @AgnesPalit 是的。您可以在github.com/mseifert9/Javascript-Slideshow 找到代码——它包含在幻灯片中。您可以在 dragdrop.js + draggable.js + droppable.js 中找到代码。幻灯片的完整演示可以在 design.mseifert.com/index.php?topid=1&grade=Slideshow 找到 【参考方案1】:

完全不同! jQuery UI 拖放使元素在页面中移动(带有顶部和左侧 CSS 属性)。

原生 HTML5 拖放 API 只允许您移动可拖动元素的“幽灵”(当然,您可以在拖动幽灵的同时隐藏原始元素)。

API 带有a lot of event 但不,您不能限制鼠标位置,因此您不能限制到单轴(导致幽灵跟随鼠标位置,即使鼠标离开页面(但事件可能可能停止运行))。

【讨论】:

+1,我更新了从 W3Schools 到 MDN 的链接以避免这成为问题的主题。 我从未链接到 W3schools,那是编辑我问题的人。这个网站很烂。

以上是关于使用 HTML5 原生拖放时如何约束移动?的主要内容,如果未能解决你的问题,请参考以下文章

使用html5拖放时滚动[重复]

如何使可拖动元素在拖放时保持在新位置(HTML5 不是 jQuery)?

如何使用原生 HTML5 约束 API 验证单选组是不是有选择 [重复]

拖放时将桌面图标移动到Windows窗体上?

HTML5原生拖放实例分析

vue+html5+原生dom+原生JavaScript实现跨区域拖放