可缩放容器鼠标上的可拖动元素在创建时从辅助对象上浮动
Draggable element on scalable container mouse floats away from helper on creation
我正试图在一个可伸缩元素上拖动一个div,当我拖动它时,鼠标似乎在创建时从助手处移开。有人能帮我吗?
这是一个jsfiddle,我的代码如下所示。
$("div.text").draggable({
zIndex: 3000,
appendTo: 'body',
helper: function (e, ue) {
return $(this).css({
'transform': 'scale(' + percent + ')',
'-moz-transform': 'scale(' + percent + ')',
'-webkit-transform': 'scale(' + percent + ')',
'-ms-transform': 'scale(' + percent + ')'
}).appendTo('body');
}
});
我也尝试过这种方法,它在高percent
期间对一些人有帮助,但随着容器的缩小,它仍然无效。
return $(this).css({
'transform': 'scale(' + percent + ')',
'-moz-transform': 'scale(' + percent + ')',
'-webkit-transform': 'scale(' + percent + ')',
'-ms-transform': 'scale(' + percent + ')'
}).appendTo('body').offset({ top: e.pageY, left: e.pageX });
您在基于鼠标位置而不是基于元素相对于鼠标位置的位置设置元素位置时遇到问题。这一点,再加上dragStart上的元素向下缩放,导致它跳到光标位于中心的位置,然后在光标上方,因为它向上缩放。您可以使用getBoundingClientRect()
来确定元素的实际位置,然后使用JS手动设置。
var containerBox = $(this)[0].getBoundingClientRect();
var docBox = document.body.getBoundingClientRect();
startTop = containerBox.top - docBox.top;
startLeft = containerBox.left - docBox.left;
$(this).css({
position: 'fixed',
top: startTop + 'px',
left: startLeft + 'px',
height: containerBox.height + 'px',
width: containerBox.width + 'px'
});
我没有试着用你的小提琴,但它很可能会解决你的问题。此外,如果您正在寻找可调整大小的特性,您也应该使用jqueryUI可调整大小小部件,而不是自己重写它。此外,为什么在拖动元素之后而不是之前缩放元素?
相关文章:
- JavaScript名称空间和对象创建
- 从不同的对象创建阵列
- Nodejs-从对象创建可读流
- Javascript对象创建实践
- 插件SDK中的动态或计算对象创建
- 为json对象创建一个动态表
- 对象.创建解释
- 从对象创建嵌套数组失败
- 从JSON对象创建具有超链接的HTML表
- 如何将文档对象创建为HTML页面
- 创建一个类,该类使用es6类语法将Function对象创建为实例
- KineticJS在对象创建(NOOB)后更改属性
- 对象创建中的JavaScript && notation
- Javascript对象创建-创建许多对象
- 从另一个JSON对象创建JSON对象
- 使用linq.js从多个对象创建JSON对象数组
- 如何使用Immutable.js从javascript原始对象创建记录映射
- 在fabric.js中初始化对象创建的子类
- Angularfire:从$FirebaseObject的子对象创建$FirebaseObject
- 为JSON对象创建CRUD