瀑布流布局特效

HTML代碼部分

<!DOCTYPE?html>

<html?lang="en">

<head>

????<meta?charset="UTF-8">

????<meta?name="viewport"?content="width=device-width,?initial-scale=1.0">

????<meta?http-equiv="X-UA-Compatible"?content="ie=edge">

????<title>瀑布流布局</title>

????<link?rel="stylesheet"?href="瀑布流布局.css">

</head>

<body>

????<div?id="bigbox">

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img01.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img02.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img03.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img04.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img05.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img06.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img07.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img08.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img09.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img10.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img11.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img12.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img13.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img14.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img15.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img16.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img17.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img18.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img19.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img20.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img21.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img22.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img23.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img24.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img25.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img26.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img27.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img28.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img29.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img30.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img31.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img32.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img33.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img34.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img35.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img36.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img37.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img38.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img39.jpg"?alt=""></div>

????????</div>

????????<div?class="box">

????????????<div?class="pic"><img?src="image/img40.jpg"?alt=""></div>

????????</div>

????</div>

</body>

????<script?src="瀑布流布局.js"></script>

</html>

CSS部分

*?{

????margin:?0;

????padding:?0;

????border:?0;

}

#bigbox?{

????margin:?0?auto;

????position:?relative;

????/*?width:?1440px;?*/

}

.box?{

????padding:?15px?0?0?15px;

????float:?left;

????/*?position:?absolute;?*/

}

.pic?{

????padding:?10px;

????border:?1px?solid?#ccc;

}

.pic?img?{

????width:?165px;

}

img{

????vertical-align:?top;

}

JS部分

window.addEventListener('load',function(){

????let?bigBox?=?document.getElementById('bigbox')

????waterFull("bigbox","box");

????let?timer?=?null;

????window.onscroll?=?function(){

????????clearTimeout(timer)

????????timer?=?setTimeout(function(){

????????????if(ifloadMore("bigbox","box")){

????????????????let?dataArr?=?[?????//實際開發(fā)過程中本階段通過ajax從服務器拿到data數(shù)據(jù)

????????????????????{"src":?"img04.jpg"},

????????????????????{"src":?"img06.jpg"},

????????????????????{"src":?"img08.jpg"},

????????????????????{"src":?"img09.jpg"},

????????????????????{"src":?"img10.jpg"},

????????????????????{"src":?"img12.jpg"},

????????????????????{"src":?"img14.jpg"},

????????????????????{"src":?"img16.jpg"},

????????????????????{"src":?"img18.jpg"}

????????????????]

????????????????for(let?i=0;i<dataArr.length;i++){

????????????????????let?newBox?=?document.createElement('div');

????????????????????newBox.setAttribute('class','box');

????????????????????bigBox.appendChild(newBox)


????????????????????let?newPic?=?document.createElement('div');

????????????????????newPic.setAttribute('class','pic')

????????????????????newBox.appendChild(newPic)


????????????????????let?newImg?=?document.createElement('img')

????????????????????newImg.src?=?'image/'+dataArr[i].src

????????????????????newPic.appendChild(newImg)

????????????????}

????????????????setTimeout(waterFull("bigbox","box"),3000)

????????????}

????????},2000)


????}

????let?timer1?=?null;

????window.onresize?=?function(){

????????clearTimeout(timer1)

????????timer1?=?setTimeout(function(){

????????????waterFull("bigbox","box")

????????????console.log(1)

????????},1000)


????}

})

function?waterFull?(parent,child)?{

????let?bigBox?=?document.getElementById(parent);

????let?smallBox?=?bigBox.getElementsByClassName(child);

????let?boxWidth?=?smallBox[0].offsetWidth;

????let?cliWidth?=?document.documentElement.clientWidth;

????let?cols?=?parseInt(cliWidth/boxWidth)

????bigBox.style.width?=?cols*boxWidth?+'px';

????let?heightArr?=?[];

????for(let?i=0;i<smallBox.length;i++){

????????boxHeight?=?smallBox[i].offsetHeight;

????????if(i<cols){

????????????heightArr.push(boxHeight);

????????????smallBox[i].style?=?''

????????}else{

????????????minBoxHeight?=?Math.min(...heightArr);

????????????minBoxIndex?=?getMinBoxIndex(heightArr,minBoxHeight);

????????????smallBox[i].style.position?=?'absolute';

????????????smallBox[i].style.left?=?minBoxIndex*boxWidth+?'px'

????????????smallBox[i].style.top?=?minBoxHeight?+?'px'

????????????heightArr[minBoxIndex]?+=?boxHeight

????????}

????}

}

function?ifloadMore?(parent,child){

????let?bigBox?=?document.getElementById(parent);

????let?smallBoxs?=?bigBox.getElementsByClassName(child);

????let?lastBox?=?smallBoxs[smallBoxs.length-1];

????let?lastBoxDis?=?lastBox.offsetHeight*0.5?+?lastBox.offsetTop;

????let?cliHeight?=?document.documentElement.clientHeight;

????let?scrollTop?=?document.documentElement.scrollTop?||?document.body.scrollTop;

????return?(scrollTop+cliHeight)?>=?lastBoxDis

}

function?getMinBoxIndex?(arr,val){

????for(let?i=0;i<arr.length;i++){

????????if(arr[i]==val){

????????????return?i

????????}

????}

}

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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