jQuery Drag/Resize with CSS Transform Scale
这个问题集中在将 jQuery 可拖动和可调整大小插件应用于具有 CSS 变换的 div 中的子元素的问题(矩阵)应用于它。当拖动子元素或调整其大小时,就会出现问题,因为 jQuery 所做的调整与鼠标位置不同步,其影响因素与所应用的比例相对应。
解决方案
之后经过一些实验,用户找到了一个解决方案,涉及修补 jQuery 的可拖动和可调整大小的插件。以下是修补代码的摘要:
- Monkey Patching mouseStart():此修补程序可确保通过根据鼠标偏移调整正确计算辅助元素的位置。元素的变换比例。
- getViewOffset():此函数有助于正确计算应用变换下元素的偏移量。
jQuery 拖动/调整大小补丁
以下代码演示了对 jQuery UI 的可拖动插件中 mouseStart() 和generatePosition() 函数的修改:
function monkeyPatch_mouseStart() { // Monkey patch mouseStart function $.ui.draggable.prototype._mouseStart = function(event) { // Calculate adjusted offset this.offset = this.positionAbs = getViewOffset(this.element[0]); } } function generatePosition(event) { // Calculate adjusted position this.top = ( pageY // Absolute mouse position - this.offset.click.top // Click offset - this.offset.relative.top // Element's initial position + ($.browser.safari && $.browser.version <h3 id="替代-jQuery">替代 jQuery</h3><p>对于那些寻求作为处理拖放和调整大小功能的 jQuery 替代方案,这里有一些需要考虑的选项:</p>
- Vanilla JavaScript: 您可以使用本机 JavaScript 事件实现拖放功能。
- React.js: React 提供了一组像 useDrag 和 useResize 这样的钩子来管理这些交互。
- Vue.js: Vuex 支持拖动通过 useDrag() 钩子进行拖放交互。
进一步改进
用户还提供了一个涉及 jQuery 插件内回调处理程序的解决方案。此方法不需要修补插件代码,并在拖动和调整大小操作期间利用比例因子来调整宽度、高度和位置。
// Resizable callback handler $(this).resizable({ ... resize: function(event, ui) { // Adjust width and height relative to scale ui.size.width = ui.originalSize.width + (ui.size.width - ui.originalSize.width) / zoomScale; ui.size.height = ui.originalSize.height + (ui.size.height - ui.originalSize.height) / zoomScale; } }); // Draggable callback handler $(this).draggable({ ... drag: function(event, ui) { // Adjust position relative to scale ui.position.left = ui.originalPosition.left + (ui.position.left - ui.originalPosition.left) / zoomScale; ui.position.top = ui.originalPosition.top + (ui.position.top - ui.originalPosition.top) / zoomScale; } });
此替代方法是管理拖动和调整大小事件的便捷解决方案在应用了变换比例的元素中,无需修改 jQuery 插件本身。
以上是如何使 jQuery 拖动/调整大小与 CSS 变换比例一起使用?的详细内容。更多信息请关注PHP中文网其他相关文章!

具有CSS的自定义光标很棒,但是我们可以将JavaScript提升到一个新的水平。使用JavaScript,我们可以在光标状态之间过渡,将动态文本放置在光标中,应用复杂的动画并应用过滤器。

互动CSS动画和元素相互启动的元素在2025年似乎更合理。虽然不需要在CSS中实施乒乓球,但CSS的灵活性和力量的增加,可以怀疑Lee&Aver Lee&Aver Lee有一天将是一场

有关利用CSS背景滤波器属性来样式用户界面的提示和技巧。您将学习如何在多个元素之间进行背景过滤器,并将它们与其他CSS图形效果集成在一起以创建精心设计的设计。

好吧,事实证明,SVG的内置动画功能从未按计划进行弃用。当然,CSS和JavaScript具有承载负载的能力,但是很高兴知道Smil并没有像以前那样死在水中

是的,让#039;跳上文字包装:Safari Technology Preview In Pretty Landing!但是请注意,它与在铬浏览器中的工作方式不同。

此CSS-tricks更新了,重点介绍了年鉴,最近的播客出现,新的CSS计数器指南以及增加了几位新作者,这些新作者贡献了有价值的内容。

在大多数情况下,人们展示了@Apply的@Apply功能,其中包括Tailwind的单个property实用程序之一(会改变单个CSS声明)。当以这种方式展示时,@Apply听起来似乎很有希望。如此明显


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)