3 回答
TA贡献1815条经验 获得超13个赞
假设您已经有一种在网格中组织此类 DIV 的机制(如图所示),那么以下内容应该为您提供所需的内容:
var items = divList.filter((div) => div.nodeType == 1); // get rid of the whitespace text nodes
items.sort(function(a, b) {
return a.innerHTML == b.innerHTML
? 0
: (a.innerHTML > b.innerHTML ? 1 : -1);
});
然后,根据需要将它们放回 DOM 中,例如:
for (i = 0; i < items.length; ++i) {
divList.appendChild(items[i]);
}
TA贡献1865条经验 获得超7个赞
这适用于第一个代码示例!
尝试这个 sortDivs 函数:
function sortDivs() {
document.querySelector("body div:last-child").remove();
alert('sorting now...')
let toSort = document.getElementsByTagName("div")
toSort = Array.prototype.slice.call(toSort, 0)
toSort.sort((a, b) => {
let aord = parseFloat(a.textContent);
let bord = parseFloat(b.textContent);
return bord - aord;
})
document.body.innerHTML = ""
for(var i = 0, l = toSort.length; i < l; i++) {
document.querySelector('body').appendChild(toSort[i]);
}
}
并在css文件中将flex-wrap设置为wrap-reverse。希望我能帮忙:)
PS:请实现一些else if而不是仅执行if
TA贡献1816条经验 获得超6个赞
这是我的示例代码的一个小摆弄,演示了一个简单的解决方案,使用纯 JavaScript 和绝对 CSS 定位来实现您想要实现的目标。
正如一些人已经指出的那样,可能有一个库已经为此提供了更好且完整的解决方案 - 我没有研究是否是这样。
代码:
文件.js
var container = document.getElementById("container")
var results = [1,2,3,4,5,6,7,8]
//you can pre-calculate the order of the distances
//here already orderdered array [distanec][X-axis][Y-axis]
var distances =[[0,0,0],
[1,1,0],
[1,0,1],
[1.414, 1,1],
[2,0,2],
[2,2,0],
[2.234, 2,1],
[2.234, 1,2]]
for (i = 0; i < results.length; i++){
var newDiv = document.createElement("div")
newDiv.className = "result"
newDiv.innerHTML = results[i]
newDiv.style.left = distances[i][1]*20 + "px"
newDiv.style.bottom = distances[i][2]*20 + "px"
container.appendChild(newDiv)
}
function setColor(element){
// set class based on value - you already have this part
}
样式.css
#container {
border: 4px;
border-color: red;
border-style: solid;
height: 200px;
width: 200px;
position: relative;
}
.result{
border: 2px;
width: 20px;
height: 20px;
position: absolute;
border-color: blue;
border-style: solid;
text-align: center;
}
网站.html
<div id="container">
</div>
输出:
- 3 回答
- 0 关注
- 138 浏览
添加回答
举报