【问题标题】:draggable containment and resize window可拖动的包含和调整窗口大小
【发布时间】:2011-07-26 04:58:04
【问题描述】:

我有这个代码

   $(window).resize(function()
        {       
            x2 = $('#mask').offset().left;

        });

    $(image).draggable({cursor: 'move', containment: [ 0, 0, x2, 0]}); 

但是我不知道如何实现拖放图片来反映浏览器窗口的大小。

我试图做的所有事情,它都无法正常工作或无法正常工作。我累了。请帮帮我

【问题讨论】:

    标签: jquery resize window draggable


    【解决方案1】:

    您的所有resize 代码所做的只是更新变量x2Draggable 不访问那个变量,它有一个你传递给它的值的副本。

    您可以更新Draggable 的包含矩形:

    // Presumably you declare and initialize `x2` somewhere
    // ...
    
    // Create the Draggable with the initial bounds
    $(image).draggable({cursor: 'move', containment: [ 0, 0, x2, 0]}); 
    
    // Watch for resize
    $(window).resize(function() {       
        // Recalc
        x2 = $('#mask').offset().left;
    
        // Update the existing draggable with its new bounds
        $(image).draggable("option", "containment", [ 0, 0, x2, 0]);
    });
    

    不过,另外,我会在 resize 处理程序中查看这一行:

    x2 = $('#mask').offset().left;
    

    大多数时候,元素的左坐标不会受到窗口调整大小的影响。它可以是,如果元素是内联的或其他东西,因此它受到自动换行的影响,或者它被浮动移动,或者它的位置由百分比定​​义,或者其他一些东西,但大多数时间,left 是唯一不会改变的坐标。

    另请注意,如果您将Draggable 创建为定义您希望能够拖动它的边界的元素内的子元素,您可以完全摆脱resize 处理程序,只需使用选项containment: "parent"

    【讨论】:

    • 调整窗口大小后,重新计算为真。但遏制采取了错误的价值。为什么?
    • @john:你的意思是你的原始代码,还是我上面的例子?我想我解释了为什么你的原始代码不起作用。可拖动对象无法访问 x2 变量,因此看不到您对其所做的任何更改;您必须明确更新遏制选项。
    • 你的代码!调整大小后,警报显示正确的重新计算,但遏制采用不同的值。或者它只是不接受新的
    • @john:为我工作:jsbin.com/uhajiz/edit 请注意,您正在限制图像,使其无法垂直移动根本(通过y1y20),并且您正在约束它的左边缘(而不是右边缘)。如果由于某种原因您不能使用containment: "parent",我可能会将计算集中在一个函数中,并通过允许图像的宽度来限制其边缘:@ 987654323@
    • T.J.克劳德,对不起。这是我的错。我只是对代码感到困惑。非常感谢您的帮助!!!:)
    猜你喜欢
    • 1970-01-01
    • 2011-12-25
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    • 1970-01-01
    相关资源
    最近更新 更多