有没有办法只使Packery / Draggabilly容器的一部分可拖动?

时间:2013-12-11 20:49:00

标签: packery

有没有办法只使Packery / Draggabilly容器的一部分可拖动?比方说,只是让下面的例子中的.chartHeader可拖动 - 但整体.chartContainer是一个整体移动?目前,只有.chartHeader可以拖动,其他一切都可以留下。我想让一切都像一个幸福的大家庭一样移动。

这是一个小提琴:http://jsfiddle.net/uD5rG/

提前致谢!

    <div class="chartContainer">
        <div class="chartHeader">HEADER</div>
        <div class="chartContent">CONTENT</div>
    </div>

这是我的packery / draggabilly配置:

        var container = document.querySelector("#packeryContainer");
        var pckry = new Packery( container, {
            itemSelector: '.chartContainer',
            columnWidth: 350,
            rowHeight: 255,
            gutter: 15
        });

        // make packery items draggable
        var itemElems = pckry.getItemElements();
        // for each item...
        for ( var i=0, len = itemElems.length; i < len; i++ ) {
            var elem = itemElems[i];

            // get the .chartHeader element
            var headerElem = elem.querySelector(".chartHeader");

            // make element draggable with Draggabilly
            var draggie = new Draggabilly( headerElem );

            // bind Draggabilly events to Packery
            pckry.bindDraggabillyEvents( draggie );
        }

4 个答案:

答案 0 :(得分:5)

修正了@ http://jsfiddle.net/uD5rG/1/

我添加了draggabilly的句柄选项,如下所示

            // make element draggable with Draggabilly
            var draggie = new Draggabilly( elem , {
                handle: '.handle'
            });

答案 1 :(得分:0)

使用绑定到jquery UI Draggable。使用jquery UI属性句柄,它对我来说很好。 http://packery.metafizzy.co/draggable.html#jquery-ui-draggable

您在jsfiddle上发布的解决方案对我不起作用。

答案 2 :(得分:0)

只需使用Cole提到的句柄选项。

$(function () {
    var $container = $('.packery');

    $container.packery({
        columnWidth: 80,
        rowHeight: 82 /* +2 for the bottom margin on .item */
    });

    // bind draggabilly events to item elements
    $container.find('.item').each(makeEachDraggable);

    function makeEachDraggable(i, itemElem) {
        // make element draggable with Draggabilly
        var draggie = new Draggabilly(itemElem, {
            handle: '.header'
        });
        // bind Draggabilly events to Packery
        $container.packery('bindDraggabillyEvents', draggie);
    }


});

这是一个简单的小提琴:http://jsfiddle.net/ex5TJ/

另外,请查看此链接以获取更多详细信息:http://draggabilly.desandro.com/

答案 3 :(得分:0)

使用jquery:

var draggie = $grid.find('.grid-item').draggable({
            handle: '.ui-sortable-handle'
        });
        $grid.packery('bindUIDraggableEvents', draggie);