jQuery的拖动和-webkit变换:规模();(jQuery draggable and -we

2019-07-05 07:37发布

我有一个地方里面的情况div有拖动项目。 然而,当家长div使用缩放-webkit-transform ,可拖动明显停止正常工作。

我转载的场景在这里 。

正如你所看到的,可拖动的项目相对移动的文件,即使父是在一个完全不同的规模。

我有刻度( 1.5在本例中),如JS一个变量,所以可以使用,但是在哪里? 我需要通过规模来划分拖动距离,对不对? 我在哪里能做到这一点?

编辑:我试过设置的功能, drag -event,但一直无法弄清楚如何真正改变拖动距离。

EDIT2:我挖了jQuery UI的源,它似乎是没有办法从事件这样做drag

if(this._trigger('drag', event, ui) === false) {
    this._mouseUp({});
    return false;
}

正如你所看到的,回调函数的返回值不存储任何关系。 回调已经解雇 ,因此更改回调里面的CSS不起作用的元素的位置被改变。

你可以看到相关的代码在这里通过使用浏览器搜索以该字符串:

_mouseDrag: function(event, noPropagation) {

Answer 1:

由于我小的JavaScript的经验量我不知道,回调实际上可以修改的位置,即使它不return任何东西。 这是因为在JS显然参数默认按引用传递。

这里有一个工作的代码:

// Couldn't figure out a way to use the coordinates
// that jQuery also stores, so let's record our own.
var click = {
    x: 0,
    y: 0
};

$('.draggable').draggable({

    start: function(event) {
        click.x = event.clientX;
        click.y = event.clientY;
    },

    drag: function(event, ui) {

        // This is the parameter for scale()
        var zoom = 1.5;

        var original = ui.originalPosition;

        // jQuery will simply use the same object we alter here
        ui.position = {
            left: (event.clientX - click.x + original.left) / zoom,
            top:  (event.clientY - click.y + original.top ) / zoom
        };

    }

});


Answer 2:

我认为你需要的可变形(http://plugins.jquery.com/project/transformable)jQuery插件,以“正常化” WebKit的缩放。 然后拖动将工作在Firefox。

这里是插件- http://flin.org/js/jquery.transformable.js 。 我认为它应该解决您的问题。 这里是我的代码的版本: http://jsfiddle.net/vMaXm/4/

$("#parent").setTransform("scalex", 1.5);
//$("#parent").setTransform("scaley", 1.5);
$('.draggable').draggable({ containment: "parent" });

然而,在这一刻,如果我去掉中间行我给你报告了同样的问题。



文章来源: jQuery draggable and -webkit-transform: scale();