javascript - Muuri 多重网格数据
问题描述
如何在我的函数 updateIndices 中为每个列项绘制数据 ID,类似于 updateColumnIndices?
我想让我的网格更加动态。我只使用 javascript 和 Muuri lib 进行拖放。
谢谢你的帮助。Muuri 是一个 JavaScript 布局引擎,它允许您构建各种布局并使它们具有响应性、可排序、可过滤、可拖动和/或动画。与现有的相比,Muuri 是 Packery、Masonry、Isotope 和 Sortable 的组合。想看看它的实际效果吗?查看网站上的演示。我在剧透下执行此任务的代码
function setupItemContainer() {
let itemContentContainer = document.querySelectorAll('.board-column-content');
for(let i = 0; i < itemContentContainer.length; i++)
{
if(!itemContentContainer[i].classList.contains('muuri'))
{
itemContainers.push(itemContentContainer[i]);
muuriItems = new Muuri(itemContentContainer[i], {
itemDraggingClass: 'muuri-item-default-dragging',
dragSortHeuristics: {
sortInterval: 10,
minDragDistance: 5,
minBounceBackAngle: Math.PI / 2
},
dragPlaceholder: {
enabled: true,
duration: 100,
easing: 'ease',
createElement: null,
onCreate: null,
onRemove: null
},
items: '.board-item',
layoutDuration: 400,
layoutEasing: 'ease',
dragEnabled: true,
dragSort: function () {
return columnGrids;
},
dragSortInterval: 0,
dragContainer: document.body,
dragReleaseDuration: 400,
dragReleaseEasing: 'ease',
itemPlaceholderClass: 'muuri-item-placeholder'
})
.on('dragStart', function (item) {
item.getElement().style.width = item.getWidth() + 'px';
item.getElement().style.height = item.getHeight() + 'px';
})
.on('dragReleaseEnd', function (item) {
item.getElement().style.width = '';
item.getElement().style.height = '';
columnGrids.forEach(function (muuriItems) {
muuriItems.refreshItems();
});
})
.on('layoutStart', function () {
muuriColumns.refreshItems().layout();
})
.on('move', updateIndices)
.on('sort', updateIndices);
columnGrids.push(muuriItems);
}
}
}
function setupColumnsContainer() {
muuriColumns = new Muuri(gridElement, {
itemDraggingClass: 'muuri-item-column-dragging',
layoutDuration: 400,
layoutEasing: 'ease',
dragEnabled: true,
dragSortInterval: 0,
dragStartPredicate: {
handle: '.board-column-header'
},
dragReleaseDuration: 400,
dragReleaseEasing: 'ease',
})
.on('move', updateColumnIndices)
.on('sort', updateColumnIndices);
}
function updateColumnIndices() {
muuriColumns.getItems().forEach(function (item, i) {
item.getElement().setAttribute('data-id', i);
});
}
function updateIndices() {
muuriItems.getItems().forEach(function (item, i) {
item.getElement().setAttribute('data-id', i);
});
}
解决方案
推荐阅读
- java - @Transactional 循环回滚
- javascript - 找不到可靠的赔率解决方案
- javascript - 正则表达式 - RxJS 6 迁移管道
- python-3.x - 如何在python3中使用pickle序列化对象
- vb.net - 即使文件不可用,从文件路径获取默认图标
- ruby - 在没有 require_relative 的情况下测试我的 ruby 模块本地更改
- java - Java JCache 字符串键与复合键
- ruby - 使用rails Axlsx合并多行的多个单元格
- r - 将数据框列中的某些值移动到 R 中的下一列
- excel - 从 Excel 组合框中删除重复项