Muuri使用心得

Muuri是一款响应式,可排序,可过滤和可拖动的网格布局的插件;

首先使用它要引用(不可以用import方法引用):

web-animations.js||web-animation.min.js

hammer.js||hammer.min.js

muuri.js||murri.min.js

记住最后调用的js文件最先引用,引入muuri前必须先引用hammer(不然会发生hammer未定义的错误)

有些框架可能会发生引入js错误,引入muuri错误或提示Muuri未定义则删除如图两行。(murri.js)

引入hammer未定义问题需要删除如图红框内(hammer.js文件最后),注意大中小括号,以免出现语法错误。

我主要使用了他的kanban样式。

以下是kanban样式的js代码:

document.addEventListener('DOMContentLoaded', function () {

    var docElem = document.documentElement;
    var kanban = document.querySelector('.kanban-demo');
    var board = kanban.querySelector('.board');
    var itemContainers = Array.prototype.slice.call(kanban.querySelectorAll('.board-column-content'));
    var columnGrids = [];
    var dragCounter = 0;
    var boardGrid;

    itemContainers.forEach(function (container) {
        console.log(container);
    });

    itemContainers.forEach(function (container) {

        var muuri = new Muuri(container, {
            items: '.board-item',
            layoutDuration: 400,
            layoutEasing: 'ease',
            dragEnabled: true,
            dragSort: function () {
                return columnGrids;
            },
            dragSortInterval: 0,
            dragContainer: document.body,
            dragReleaseDuration: 400,
            dragReleaseEasing: 'ease'
        })
            .on('dragStart', function (item) {
                ++dragCounter;
                docElem.classList.add('dragging');
                item.getElement().style.width = item.getWidth() + 'px';
                item.getElement().style.height = item.getHeight() + 'px';
            })
            .on('dragEnd', function (item) {
                if (--dragCounter < 1) {
                    docElem.classList.remove('dragging');
                }
            })
            .on('dragReleaseEnd', function (item) {
                item.getElement().style.width = '';
                item.getElement().style.height = '';
                columnGrids.forEach(function (muuri) {
                    muuri.refreshItems();
                });
            })
            .on('layoutStart', function () {
                boardGrid.refreshItems().layout();
            });

        columnGrids.push(muuri);

    });

    boardGrid = new Muuri(board, {
        layoutDuration: 400,
        layoutEasing: 'ease',
        dragEnabled: true,
        dragSortInterval: 0,
        dragStartPredicate: {
            handle: '.board-column-header'
        },
        dragReleaseDuration: 400,
        dragReleaseEasing: 'ease'
    });

});

css代码(自己根据需求改了一些,和官网不太一样):

 .board {
        position: relative;
        margin-left: 1%;
        margin-top: 2%;
    }
    .board-column {
        overflow:auto;
        transform: translateX(0px) translateY(0px);
        max-height: 400px;
        position: absolute;
        left: 0;
        right: 0;
        width: 30%;
        margin: 0 5%;
        background: #f0f0f0;
        border-radius: 3px;
        z-index: 1;
    }
    .board-column.muuri-item-releasing {
        z-index: 2;
    }
    .board-column.muuri-item-dragging {
        z-index: 3;
        cursor: move;
    }
    .board-column-header {
        position: relative;
        height: 50px;
        line-height: 50px;
        overflow: hidden;
        padding: 0 20px;
        text-align: center;
        background: #333;
        color: #fff;
        border-radius: 3px 3px 0 0;
    }
    @media (max-width: 600px) {
        .board-column-header {
            text-indent: -1000px;
        }
    }
    .board-column.todo .board-column-header {
        background: #4A9FF9;
    }
    .board-column.working .board-column-header {
        background: #f9944a;
    }
    .board-column.done .board-column-header {
        background: #2ac06d;
    }
    .board-column-content {
        position: relative;
        border: 10px solid transparent;
        height: 400px;
        overflow-y: auto;
    }
    .board-item {
        position: absolute;
        width: 100%;
        margin: 5px 0;
    }
    .board-item.muuri-item-releasing {
        z-index: 9998;
    }
    .board-item.muuri-item-dragging {
        z-index: 9999;
        cursor: move;
    }
    .board-item.muuri-item-hidden {
        z-index: 0;
    }
    .board-item-content {
        position: relative;
        padding: 20px;
        background: #fff;
        border-radius: 4px;
        font-size: 17px;
        cursor: pointer;
        -webkit-box-shadow: 0px 1px 3px 0 rgba(0,0,0,0.2);
        box-shadow: 0px 1px 3px 0 rgba(0,0,0,0.2);
    }
    @media (max-width: 600px) {
        .board-item-content {
            text-align: center;
        }
        .board-item-content span {
            display: none;
        }
    }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值