gpt4 book ai didi

jQuery UI Draggable + CSS Transform 导致 "Jumping"

转载 作者:技术小花猫 更新时间:2023-10-29 10:31:14 25 4
gpt4 key购买 nike

编辑: 我解决了。但是 StackOverflow 不允许我将我的答案标记为解决方案,所以我根本不会这样做。

我在将 Draggable 与 CSS 转换后的父级一起使用时遇到问题。基本上,我需要使用绝对定位在光标正下方生成一个 Draggable div。当绝对定位与 CSS 转换一起使用时,可拖动元素会在拖动发生时向右跳跃。跳跃发生后,行为按预期进行。如果没有对可拖动对象或父 div 应用转换,则不会发生跳转。

这是一个准确显示问题所在的 fiddle : http://jsfiddle.net/qBubN/7/

body {
background-color: blue;
}

#draggable {
position: absolute;
left: 50px;
top: 50px;
background-color: rgba(0,0,0,0.5);
border: 1px solid black;
width: 350px;
height: 350px;
color: white;
-moz-transform: scale(0.5);
-webkit-transform: scale(0.5);
transform: scale(0.5);}

$("#draggable").draggable({
scroll: true,
distance: 5,
grid : [ 10, 10 ],
start: function (event, ui) {
}
});

<html>
<body>
<div id="draggable">
Hello!
</div>
</body>
</html>

已经尝试应用此补丁,但无济于事。这个修复程序很可能太旧而无法工作。我也有可能错误地应用了补丁。 Webkit and jQuery draggable jumping

最佳答案

//css3 transform bug with jquery ui drag - fixed(works fine whether position, absolute or relative)
var __dx;
var __dy;
var __scale=0.5;
var __recoupLeft, __recoupTop;

$("#draggable").draggable({
//revert: true,
zIndex: 100,
drag: function (event, ui) {
//resize bug fix ui drag `enter code here`
__dx = ui.position.left - ui.originalPosition.left;
__dy = ui.position.top - ui.originalPosition.top;
//ui.position.left = ui.originalPosition.left + ( __dx/__scale);
//ui.position.top = ui.originalPosition.top + ( __dy/__scale );
ui.position.left = ui.originalPosition.left + (__dx);
ui.position.top = ui.originalPosition.top + (__dy);
//
ui.position.left += __recoupLeft;
ui.position.top += __recoupTop;
},
start: function (event, ui) {
$(this).css('cursor', 'pointer');
//resize bug fix ui drag
var left = parseInt($(this).css('left'), 10);
left = isNaN(left) ? 0 : left;
var top = parseInt($(this).css('top'), 10);
top = isNaN(top) ? 0 : top;
__recoupLeft = left - ui.position.left;
__recoupTop = top - ui.position.top;
},
stop: function (event, ui) {
$(this).css('cursor', 'default');
//alternate to revert (don't use revert)
$(this).animate({
left: $(this).attr('oriLeft'),
top: $(this).attr('oriTop')
}, 1000)
},
create: function (event, ui) {
$(this).attr('oriLeft', $(this).css('left'));
$(this).attr('oriTop', $(this).css('top'));
}
});

关于jQuery UI Draggable + CSS Transform 导致 "Jumping",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17098464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com