3 回答

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊
假設(shè)您已經(jīng)有一種在網(wǎng)格中組織此類(lèi) DIV 的機(jī)制(如圖所示),那么以下內(nèi)容應(yīng)該為您提供所需的內(nèi)容:
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);
});
然后,根據(jù)需要將它們放回 DOM 中,例如:
for (i = 0; i < items.length; ++i) {
divList.appendChild(items[i]);
}

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
這適用于第一個(gè)代碼示例!
嘗試這個(gè) sortDivs 函數(shù):
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設(shè)置為wrap-reverse。希望我能幫忙:)
PS:請(qǐng)實(shí)現(xiàn)一些else if而不是僅執(zhí)行if

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個(gè)贊
這是我的示例代碼的一個(gè)小擺弄,演示了一個(gè)簡(jiǎn)單的解決方案,使用純 JavaScript 和絕對(duì) CSS 定位來(lái)實(shí)現(xiàn)您想要實(shí)現(xiàn)的目標(biāo)。?
正如一些人已經(jīng)指出的那樣,可能有一個(gè)庫(kù)已經(jīng)為此提供了更好且完整的解決方案 - 我沒(méi)有研究是否是這樣。
代碼:
文件.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;
}
網(wǎng)站.html
<div id="container">
</div>
輸出:
- 3 回答
- 0 關(guān)注
- 223 瀏覽
添加回答
舉報(bào)