document.querySelector('.nr-add').addEventListener('click', function () {
var ul = document.querySelector('.nr-list');
var lastNode = ul.children[ul.children.length - ul.querySelectorAll('.flex-repair-item').length - 1];
var node = this.parentNode;
var nn = node.cloneNode();
nn.innerHTML = (lastNode.innerHTML * 1) + 1;
ul.insertBefore(nn, lastNode.nextSibling);
}, false);
var fr = {
build: function (se) {
var box = document.querySelector(se), si, defer = 10, repairClass = 'flex-repair-item';
new ResizeObserver(function () {
//移除修补
box.querySelectorAll('.' + repairClass).forEach(item => item.remove());
clearTimeout(si);
si = setTimeout(function () {
var childs = box.children, len = childs.length;
var index = 0, one = childs[0];
for (var i = 0; i < len; i++) {
var node = childs[i];
if (node.offsetTop != one.offsetTop) {
index = i;
break;
}
}
var repair = index > 1 ? index - len % index : 0;
if (repair == i) {
repair = 0;
}
//第一行不足补齐
if (repair == 0) {
var mw = getComputedStyle(one, null).margin.match(/\d+/)[0] * 2;
var rownum = Math.floor(box.parentNode.clientWidth / (one.offsetWidth + mw));
if (len < rownum) {
repair = rownum - len;
}
}
//补齐
while (repair--) {
var nn = one.cloneNode();
nn.classList.add(repairClass);
box.appendChild(nn)
}
}, defer);
}).observe(box);
}
}
fr.build('.nr-list');