代码之家  ›  专栏  ›  技术社区  ›  Tim

可以将jquery的大小限制为x或y轴,如拖动约束?

  •  7
  • Tim  · 技术社区  · 15 年前

    此jquery允许您约束拖动移动,使其仅发生在指定轴上:

    $("#draggable2").draggable({ axis: 'x' });
    

    见: http://jqueryui.com/demos/draggable/#constrain-movement

    这不是合法的jquery,但我希望它是:

    $("#Container").resizable({ minHeight: 150, containment: {axis:'y' } });
    

    是否可以防止用户在使容器更宽的同时使其更高?

    谢谢

    4 回复  |  直到 12 年前
        1
  •  26
  •   dtretyakov    14 年前

    是的,可以使用UI事件。沿X轴:

    $("#Container").resizable({
        resize: function(event, ui) {
            ui.size.width = ui.originalSize.width;
        }
    });
    

    或沿Y轴:

    $("#Container").resizable({
        resize: function(event, ui) {
            ui.size.height = ui.originalSize.height;
        }
    });
    
        2
  •  27
  •   daveagp    13 年前

    这两个答案都有效,但它们的结果很不幸,即在东部边界上显示了一个<->光标,使用户认为它们可能能够调整宽度。我认为更好的匹配是在jquery对象上调用它:

    .resizable({handles:'s'})

    因为这只会消除更改宽度和光标的可能性。

        3
  •  3
  •   Andy Yang    12 年前

    我发现,只要清除对象上的高度或宽度行样式,调整大小也可以。它还具有不绑定到对象的原始维度的额外好处(因为这些维度可能会根据内容进行更改)

    $("#Container").resizable({
        resize: function(event, ui) {
            $(this).css('height','');
        }
    });
    
        4
  •  2
  •   Tomas Aschan    15 年前

    我看到了两种方法,一种比另一种更好。最好的先:

    1)将minwidth和maxwidth设置为相同的值(即希望宽度保持不变的值)。

    $('#theThing').resizable({ minWidth = 200, maxWidth = 200 });
    

    2)创建一个宽度固定的父元素,并将其作为容器。我不知道这在高度上是如何工作的,但是默认情况下 div 如果它的内容没有指定的高度,它就会增长,所以它可能工作。