jQuery UI可调整大小 - 操作方向

gru*_*czy 9 jquery user-interface resizable

如何确定调整大小操作的方向?我试着谷歌搜索,并在jquery ui上找到了一张票据,说是固定的.但是没有关于如何使用它的文档.

six*_*ear 5

不确定您是否想要将调整大小操作约束到特定轴,或者您是否想知道实际调整大小的方向.

如果你想成为前者,RaYell的答案是有效的.我将讨论后者.

如果你设置这样的可调整大小:

var r = $("#resizable");
r.resizable();
Run Code Online (Sandbox Code Playgroud)

假设您想知道用户释放鼠标按钮调整大小的方向.让我们将函数绑定到resize stop事件:

r.bind('resizestop', function(event, ui) {
    // determine resize deltas
    var delta_x = ui.size.width - ui.originalSize.width;
    var delta_y = ui.size.height - ui.originalSize.height;
}
Run Code Online (Sandbox Code Playgroud)

使用传递的ui对象,我们可以通过从旧大小中减去新大小来确定大小的相对变化.之后,您可以使用delta_x,delta_y但无论如何.让我们构建一个对应于其中一个句柄的字符串.

r.bind('resizestop', function(event, ui) {

    // determine resize deltas
    var delta_x = ui.size.width - ui.originalSize.width;
    var delta_y = ui.size.height - ui.originalSize.height;

    // build direction string
    var dir = '';

    if (delta_y > 0) { 
        dir += 's';
    } else if (delta_y < 0) { 
        dir += 'n';         
    }      

    if (delta_x > 0) { 
        dir += 'e';
    } else if (delta_x < 0) { 
        dir += 'w';
    }

    // do something with this string
    alert(dir);        
});
Run Code Online (Sandbox Code Playgroud)

请注意,如果元素的两侧都有句柄,只有它的净方向,这不一定会返回实际用于执行调整大小的句柄.

  • 当我想确定调整大小结束时的变化时,这个解决方案很酷.但问题是,我想知道调整大小开始时的方向.我知道这可能看起来很荒谬,因为我无法猜测,用户是否会缩小或扩大尺寸.但我唯一需要知道的是,选择哪个hanlder - 东方或西方(在我的应用程序中只有那两个可能). (2认同)
  • 除了这个答案的最后陈述之外,例如,如果移动"西方"手柄,这不会失败吗?在这种情况下,如果宽度减小 - 通过向东移动手柄 - delta_x将小于零,因此报告的方向将为"w". (2认同)

ste*_*ste 5

在开始时,调整大小并停止回调:

$(this).data('resizable').axis
Run Code Online (Sandbox Code Playgroud)