感應(yīng)式瀑布流+圖片的預(yù)加載

先聲明一個(gè)數(shù)組,再創(chuàng)建img,再放進(jìn)數(shù)組里,不讓它被回收,當(dāng)設(shè)置src時(shí),就會(huì)發(fā)出請(qǐng)求,下載圖片的路徑,把所有的圖片的路徑都下載好后,再執(zhí)行,因?yàn)橐呀?jīng)提前請(qǐng)求了路徑了,在同一個(gè)頁(yè)面,請(qǐng)求過(guò)一次后,下面再用相同路徑圖片的時(shí)候就不用再請(qǐng)求了,可以瞬間加載好所有已經(jīng)預(yù)加載的圖片了

<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>圖片版瀑布流</title>
<style type="text/css">
.box{
width: 100%;
border: 1px purple solid;
position: relative;
margin: 0 auto;
/min-width: 200px;/
}
.box img{
width: 200px;
position: absolute;
transition: 0.5s;
}
</style>
</head>
<body>
<div>
<progress min="0" max="100" value="0" id="progress" ></progress>
</div>
<div class="box">
</div>
</body>
<script type="text/javascript">
var progress = document.getElementById("progress");
var box = document.getElementsByClassName('box')[0];
var heightArr=[];
var count = 0;
ar arr = ["wk1.png", "bg.png", "cold.png", "wm.png"]
var imgArr = [];
for(var j = 0; j < 16; j++){
//new Image和document.createElement('img')等價(jià)
var readyImg = new Image();
//把聲明的對(duì)象存到數(shù)組里,垃圾回收機(jī)制就不會(huì)回收?qǐng)D片;
imgArr.push(readyImg);
//圖片是在設(shè)置完src后就開(kāi)市加載圖片
readyImg.src = "img/P_0" + j + ".jpg”;
//onload方法綁定的是readImage指的對(duì)象----16張圖片
eadyImg.onload = function(){
count++;
progress.value = (count / 16) * 100;
if(count == 16){
start();
//在這個(gè)位置寫onresize方法是為了在圖片沒(méi)預(yù)加載好之前拖動(dòng)窗口時(shí)不會(huì)加載圖 片
window.onresize=function(){
start();
}
}
}
}
var isFirst=true;
function start(){
var l=parseInt((window.innerWidth-16)/210);
//如果窗口寬度發(fā)生變化,但是獵術(shù)沒(méi)有變,就不能重新布局
if(heightArr.length==l&&l!=0){
return;
}
//如果窗口列數(shù)不足1列,也要保證heightArr的長(zhǎng)度為1
heightArr.length=l==0?1:l;
box.style.width=210*l+'px';
for (var i=0;i<heightArr.length;i++) {
heightArr[i]=0;
}
for(var i = 0; i < 16; i++){
var img = imgArr[i]
var minIndex = 0;
for(var j = 1; j < heightArr.length; j++){
if (heightArr[minIndex] > heightArr[j]) {
minIndex = j;
}
}
img.style.left = minIndex * 210 + "px";
img.style.top = heightArr[minIndex] + "px";
if (isFirst) {
box.appendChild(img);
}
heightArr[minIndex] += (img.offsetHeight + 10);
}
//在第一次調(diào)用完start后關(guān)掉開(kāi)關(guān),不再創(chuàng)建img
isFirst=false;
}
</script>
</html>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 所謂瀑布流,就是圖片分幾列有規(guī)律的排列,但是這里的排列是有要求的,普通的浮動(dòng)布局會(huì)使圖片與圖片之間有很多的空隙,這...
    小飛俠zzr閱讀 883評(píng)論 0 0
  • 1. tab列表折疊效果 html: 能源系統(tǒng)事業(yè)部 崗位名稱: 工作地點(diǎn) 崗位名...
    lilyping閱讀 2,008評(píng)論 0 1
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問(wèn)題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,891評(píng)論 0 33
  • 工廠模式類似于現(xiàn)實(shí)生活中的工廠可以產(chǎn)生大量相似的商品,去做同樣的事情,實(shí)現(xiàn)同樣的效果;這時(shí)候需要使用工廠模式。簡(jiǎn)單...
    舟漁行舟閱讀 8,115評(píng)論 2 17
  • “為自己的目標(biāo)努力著,全身心投入一件事情的時(shí)候,就不再整天想睡懶覺(jué),不再熬夜看偶像,也不用刻意去想怎樣好好生活,刪...
    你倒是發(fā)個(gè)光呀閱讀 139評(píng)論 0 0

友情鏈接更多精彩內(nèi)容