为每个gridster.js小部件设置最小宽度和高度

时间:2012-11-25 09:08:26

标签: jquery jquery-ui gridster

我正在使用gridster.js与Jquery UI相结合,通过使用此位拖动来调整其大小:

$('.layout_block').resizable({
    grid: [grid_size + (grid_margin * 2), grid_size + (grid_margin * 2)],
    animate: false,
    minWidth: grid_size,
    minHeight: grid_size,
    containment: '#layouts_grid ul',
    autoHide: true,
    stop: function(event, ui) {
        var resized = $(this);
        setTimeout(function() {
            resizeBlock(resized);
        }, 300);
    }
});

$('.ui-resizable-handle').hover(function() {
    layout.disable();
}, function() {

    layout.enable();
});

function resizeBlock(elmObj) {

    var elmObj = $(elmObj);
    var w = elmObj.width() - grid_size;
    var h = elmObj.height() - grid_size;

    for (var grid_w = 1; w > 0; w -= (grid_size + (grid_margin * 2))) {

        grid_w++;
    }

    for (var grid_h = 1; h > 0; h -= (grid_size + (grid_margin * 2))) {

        grid_h++;
    }

    layout.resize_widget(elmObj, grid_w, grid_h);
}

正如GitHub上所建议的那样:

http://jsfiddle.net/maxgalbu/UfyjW/

我需要为每个小部件指定最小宽度和高度,而不是为gridster指定。

是否有明显的方法来实现此功能?

由于

2 个答案:

答案 0 :(得分:5)

如果对任何人都有帮助,我设法解决了问题:

为每个小部件添加了一个数据属性,以指定最小X和Y:

data-minx="2" data-miny="2" 

然后重写了resize函数:

$('.layout_block').resizable({
    grid: [grid_size + (grid_margin * 2), grid_size + (grid_margin * 2)],
    animate: false,
    containment: '#layouts_grid ul',
    autoHide: true,
    start: function(event, ui) {
        var resized = $(this);
        $('.layout_block').resizable( "option", "minWidth", resized.data('minx') * grid_size );
        $('.layout_block').resizable( "option", "minHeight", resized.data('miny') * grid_size );
    },
    stop: function(event, ui) {
        var resized = $(this);
        setTimeout(function() {
            resizeBlock(resized);   
        }, 300);
    }
});

不是设置最小高度和宽度,而是在可调整大小的开始

上运行一个函数

获取minx和miny属性并调整参数以相应地调整大小。

答案 1 :(得分:3)

从版本0.2.1开始,您可以使用内置调整大小功能来使窗口小部件可以调整大小。

虽然没有记录,但您可以使用resize.min_size指定小部件的最小大小。 resize.max_size已记录在案并且工作原理相同。

示例:

resize: {
    enabled: true,
    min_size: [4, 4]
}