仅使一个网格微件可调整大小



是否可以只调整一个网格小部件的大小?

我已经做到了,所以用户可以点击一个小部件标题,以便它展开和收缩。

我想让它在扩展小部件时可以调整大小。

这能做到吗? 如果是这样,如何?

您只能让一些"特定"小部件调整大小,修改(仅 4 行)库,如下所示(参考 gridster.js - v0.5.1 - 2014-03-26) ..

1)更新add_widget功能(修改后的行在注释中标记为"自定义"):

fn.add_widget = function(html, size_x, size_y, col, row, max_size, min_size, resizable) { //custom
        var pos;
        size_x || (size_x = 1);
        size_y || (size_y = 1);
        if (!col & !row) {
            pos = this.next_position(size_x, size_y);
        }else{
            pos = {
                col: col,
                row: row
            };
            this.empty_cells(col, row, size_x, size_y);
        }
        var $w = $(html).attr({
                'resizable' : (resizable === true), //custom
                'data-col': pos.col,
                'data-row': pos.row,
                'data-sizex' : size_x,
                'data-sizey' : size_y
            }).addClass('gs-w').appendTo(this.$el).hide();

[...]

2)更新register_widget功能(再次注意评论中的"自定义"一词):

fn.register_widget = function($el) {
        var resizable = $el.attr('resizable'); //custom
        var wgd = {
            'col': parseInt($el.attr('data-col'), 10),
            'row': parseInt($el.attr('data-row'), 10),
            'size_x': parseInt($el.attr('data-sizex'), 10),
            'size_y': parseInt($el.attr('data-sizey'), 10),
            'max_size_x': parseInt($el.attr('data-max-sizex'), 10) || false,
            'max_size_y': parseInt($el.attr('data-max-sizey'), 10) || false,
            'min_size_x': parseInt($el.attr('data-min-sizex'), 10) || false,
            'min_size_y': parseInt($el.attr('data-min-sizey'), 10) || false,
            'el': $el
        };
        if (this.options.avoid_overlapped_widgets &&
            !this.can_move_to(
             {size_x: wgd.size_x, size_y: wgd.size_y}, wgd.col, wgd.row)
        ) {
            $.extend(wgd, this.next_position(wgd.size_x, wgd.size_y));
            $el.attr({
                'data-col': wgd.col,
                'data-row': wgd.row,
                'data-sizex': wgd.size_x,
                'data-sizey': wgd.size_y
            });
        }
        // attach Coord object to player data-coord attribute
        $el.data('coords', $el.coords());
        // Extend Coord object with grid position info
        $el.data('coords').grid = wgd;
        this.add_to_gridmap(wgd, $el);
        this.options.resize.enabled && (resizable === "true") && this.add_resize_handle($el); //custom
        return this;
    };

做!

add_widget函数的新签名现在是:

.add_widget( html, [size_x], [size_y], [col], [row], [resizable] )

只需将"可调整大小"参数设置为 true,如果您希望小部件可调整大小!

启用调整大小时,每个小部件使用 setup_resize() 函数在 span 元素中获取 gs-resize-handle 类。

因此,您可以通过添加自定义类来使用 CSS 来隐藏带有 CSS 的调整大小手柄,例如:

.no-resize .gs-resize-handle-both{
   display:none;
}

当您展开小部件时,您将删除自定义类。

编辑:

另一种方法可能是像在 gridster 可扩展演示中的演示一样,对点击事件进行一些更改。

最新更新