JavaScript實(shí)現(xiàn)瀑布流效果

只放了js部分,剛希望多多指出錯(cuò)誤

window.onload=function(){

//實(shí)現(xiàn)瀑布流布局

waterfall('main','box');//調(diào)用

//鼠標(biāo)滾動(dòng)加載圖片

window.onscroll=function (){

if (cheakwillloadnewimage()){

//數(shù)據(jù)

vardataarr=[{src:'20.jpg'},

{src:'20.jpg'},

{src:'22.jpg'},

{src:'23.jpg'},

{src:'24.jpg'},

{src:'25.jpg'},

{src:'26.jpg'},

]

//遍歷數(shù)組,插入新的標(biāo)簽

for (vari=0;i

varnewbox=document.createElement('div')

newbox.className='box';

$('main').appendChild(newbox);

varpics=document.createElement('div');

pics.className='pic';

newbox.appendChild(pics);

varimgs=document.createElement('img');

imgs.src='images/'+dataarr[i].src;

pics.appendChild(imgs);

}

waterfall('main','box');//重新調(diào)用布局

}

}

//函數(shù)

functionwaterfall(parent,box){

//讓父盒子居中

//獲取所有盒子

varallbox= $('main').getElementsByClassName(box);

//獲取盒子寬度

varboxwidth=allbox[0].offsetWidth;

//獲取屏幕寬度

varscreenwidth=document.documentElement.clientWidth;

//算出一共多少列

varrole=parseInt(screenwidth/boxwidth);

//console.log(role);

//居中

$('main').style.width=role*boxwidth+'px';

$('main').style.margin='0 auto';

//子盒子居中

//定義高度數(shù)組

varheightarr=[];

//遍歷數(shù)組

for (vari=0;i

//盒子的高度

varboxheight=allbox[i].offsetHeight;

//console.log(boxheight);

//取出第一行盒子的高度并且放進(jìn)數(shù)組

if (i

heightarr.push(boxheight);

}else{//剩余行

//求出數(shù)組中最矮的盒子高度

varminheight= _.min(heightarr);

//console.log(minheight); 146

//求出最矮盒子對(duì)應(yīng)的下標(biāo)索引

varminboxindex=getMinBoxIndex(heightarr,minheight);

//console.log(minboxindex);

//子盒子定位(定在最小盒子下面)

allbox[i].style.position='absolute';

allbox[i].style.left=minboxindex*boxwidth+'px';

allbox[i].style.top=minheight+'px';

//更新數(shù)組

heightarr[minboxindex]+=boxheight;

}

}

//console.log(heightarr);

}

//求出最矮盒子對(duì)應(yīng)的下標(biāo)

functiongetMinBoxIndex(arr,val){

for (vari=0;i

if (arr[i]==val){

returni;

}

}

}

//判斷是否加載新圖片

//返回值true false

functioncheakwillloadnewimage(){

//獲取最后一個(gè)盒子

varallbox=document.getElementsByClassName('box');

//console.log(allbox.length)

varlastbox=allbox[allbox.length-1];

//計(jì)算最后一個(gè)盒子偏離網(wǎng)頁的距離以及自身高度的一半

varlastboxt=lastbox.offsetHeight*0.5+lastbox.offsetTop;

//console.log(lastboxt);

//求出屏幕高度

varscreenh=document.documentElement.clientHeight||document.body.clientHeight;

//console.log(screenh)

//求出被網(wǎng)頁卷出去的距離

varscrollt=scroll().top;

//console.log(scrollt)

returnlastboxt<=screenh+scrollt;

//console.log(lastboxt, screenh, scrollt);

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末医男,一起剝皮案震驚了整個(gè)濱河市睹簇,隨后出現(xiàn)的幾起案子拿撩,更是在濱河造成了極大的恐慌厕妖,老刑警劉巖匙头,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件低匙,死亡現(xiàn)場(chǎng)離奇詭異硼端,居然都是意外死亡州丹,警方通過查閱死者的電腦和手機(jī)阱冶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門刁憋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人木蹬,你說我怎么就攤上這事至耻。” “怎么了镊叁?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵尘颓,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我晦譬,道長(zhǎng)疤苹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任敛腌,我火速辦了婚禮卧土,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘像樊。我一直安慰自己尤莺,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布生棍。 她就那樣靜靜地躺著颤霎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪足绅。 梳的紋絲不亂的頭發(fā)上捷绑,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音氢妈,去河邊找鬼粹污。 笑死,一個(gè)胖子當(dāng)著我的面吹牛首量,可吹牛的內(nèi)容都是我干的壮吩。 我是一名探鬼主播进苍,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼鸭叙!你這毒婦竟也來了觉啊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤沈贝,失蹤者是張志新(化名)和其女友劉穎杠人,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宋下,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嗡善,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了学歧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片罩引。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖枝笨,靈堂內(nèi)的尸體忽然破棺而出袁铐,到底是詐尸還是另有隱情,我是刑警寧澤横浑,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布剔桨,位于F島的核電站,受9級(jí)特大地震影響伪嫁,放射性物質(zhì)發(fā)生泄漏领炫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一张咳、第九天 我趴在偏房一處隱蔽的房頂上張望帝洪。 院中可真熱鬧,春花似錦脚猾、人聲如沸葱峡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽砰奕。三九已至,卻和暖如春提鸟,著一層夾襖步出監(jiān)牢的瞬間军援,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工称勋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留胸哥,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓赡鲜,卻偏偏與公主長(zhǎng)得像空厌,于是被迫代替她去往敵國(guó)和親庐船。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 在極客學(xué)院下載的js基礎(chǔ)視頻中學(xué)習(xí)到了用js實(shí)現(xiàn)瀑布流效果嘲更,然后自己總結(jié)了兩個(gè)關(guān)鍵的點(diǎn)筐钟,一個(gè)是瀑布流效果的實(shí)現(xiàn),另...
    McRay閱讀 434評(píng)論 0 2
  • html結(jié)構(gòu) (Emmet) (div.box>div.pic>img[src="images/$.jpg"])*...
    LaBaby_閱讀 635評(píng)論 0 0
  • html結(jié)構(gòu) (Emmet)(div.box>div.pic>img[src="images/$.jpg"])*2...
    黎貝卡beka閱讀 515評(píng)論 1 4
  • 1、什么是教學(xué)服務(wù)狱庇?你的理解是什么恶耽? 1)定義:教師用自己的專業(yè)和責(zé)任贏取客戶信任的課堂外服務(wù)偷俭。2)我的理解:在課...
    陳超見閱讀 164評(píng)論 1 0
  • 第六天 6月17日 雨天 今天給老爸老媽視頻電話了涌萤,雖然沒說什么特別的,但是聊聊家常透揣,似乎也會(huì)得到滿足川抡,鼓...
    活石美音閱讀 206評(píng)論 2 2