JavaScript實現(xiàn)圖片自動加載的瀑布流效果
來源:易賢網(wǎng) 閱讀:829 次 日期:2016-07-08 13:56:03
溫馨提示:易賢網(wǎng)小編為您整理了“JavaScript實現(xiàn)圖片自動加載的瀑布流效果”,方便廣大網(wǎng)友查閱!

這篇文章主要介紹了JavaScript實現(xiàn)圖片自動加載的瀑布流效果的相關(guān)資料,需要的朋友可以參考下

先給大家展示下效果圖:

名單

向下滑動網(wǎng)頁的時候能夠自動加載圖片并顯示。

盛放圖片的盒子模型如下:

    <div class="box">

<div class="box_img">

<img src="Img/8.jpg">

</div>

</div>

設(shè)置img-width為150px,然后box_img添加內(nèi)邊距和陰影效果,box的外邊距為0,添加內(nèi)邊距。盒子的寬度是由img-width和邊距撐開的。也就是說盒子之間是沒有間距的,但是盒子內(nèi)部有一些邊距的效果。這樣在js設(shè)置位置的時候就不用考慮邊距問題,直接調(diào)用box的寬度就可以了。

設(shè)置盛放所有box的div的position為relative,這樣在設(shè)置top值或是left值的時候,就不用考慮最外層的margin屬性。

放置圖片的位置:獲得第一行圖片的高度并且存放在數(shù)組里面,接下來的圖片設(shè)置position為absolute,放置在高度最小的圖片的下面,然后設(shè)置top和left,并且把數(shù)組的最小值加上新放置的圖片的高度。也就是說HTML里面原始放置的圖片除了第一行以外,其他的圖片都是在js里面又重新定位的。

當滑動頁面到底部的時候觸發(fā)事件函數(shù),緊接著放置一些圖片,這樣保證圖片的無限加載。

HTML文件:

<!DOCTYPE html>

<html>

<head lang="en">

<meta charset="UTF-">

<title></title>

<link rel="stylesheet" href="waterfall.css" type="text/css">

<script src="waterfall.js"></script>

</head>

<body>

<div id="content">

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box" >

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box" >

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box" >

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box" >

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box">

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

<div class="box" >

<div class="box_img">

<img src="Img/.jpg">

</div>

</div>

</div>

</body>

</html>

CSS文件:

*{

margin: ;

padding:;

}

#content{

position: relative;

background-color: #;

}

.box{

padding: px;

float: left;

}

.box_img{

padding: px;

border: px solid #cccccc;

box-shadow: px #cccccc;

border-radius: px;

}

img{

width: px;

height: auto;

}

js文件:

Math.floor()函數(shù)能夠向下取整。

Math.min.apply(null,heightArr);函數(shù)能獲得heightArr數(shù)組的最小值。

window.onscroll=function(){};滑動頁面的時候觸發(fā)這個函數(shù)。

document.documentElement.clientHeight;瀏覽器顯示出來的高度。

document.documentElement.scrollTop;滑動的距離。

/**

* Created by asua on 2016/4/9.

*/

window.onload=function(){

imgLocation("content","box");

var lodeImage={"Date":[{"src":"1.jpg"},{"src":"2.jpg"},{"src":"3.jpg"},{"src":"4.jpg"},{"src":"5.jpg"},{"src":"6.jpg"},{"src":"7.jpg"},{"src":"8.jpg"},{"src":"9.jpg"},{"src":"10.jpg"},]}

window.onscroll=function(){

if(checkFlag()){

for(var i=0;i<lodeImage.Date.length;i++){

var box=document.createElement("div");

box.className="box";

var cparent=document.getElementById("content");

cparent.appendChild(box);

var box_img=document.createElement("div");

box_img.className="box_img";

box.appendChild(box_img);

var img=document.createElement("img");

img.src="Img/"+lodeImage.Date[i].src;

box_img.appendChild(img);

}

imgLocation("content","box");

}

}

}

function checkFlag(){

var cparent=document.getElementById("content");

var ccontent=getChildElement(cparent,"box");

var lastContentHeight=ccontent[ccontent.length-1].offsetTop;

var scrollHeight=document.documentElement.scrollTop||document.body.scrollTop;

var pageHeight=document.documentElement.clientHeight||document.body.clientHeight;

console.log(lastContentHeight+":"+scrollHeight+":"+pageHeight);

if(lastContentHeight<scrollHeight+pageHeight){

return true;

}

}

function imgLocation(parent,child){

var cparent=document.getElementById(parent);

var ccontent=getChildElement(cparent,child);

var imgwidth=ccontent[0].offsetWidth;

var cols=Math.floor(document.documentElement.clientWidth/imgwidth);

cparent.style.cssText="width:"+imgwidth*cols+"px;margin:30px auto";

var heightArr=[];

for(var i=0;i<ccontent.length;i++){

if(i<cols){

heightArr.push(ccontent[i].offsetHeight);

}else{

var minHeight=Math.min.apply(null,heightArr);

var minIndex=getMinIndex(heightArr,minHeight);

ccontent[i].style.position="absolute";

ccontent[i].style.top=minHeight+"px";

ccontent[i].style.left=ccontent[minIndex].offsetLeft+"px";

heightArr[minIndex]+=ccontent[i].offsetHeight;

}

}

}

function getMinIndex(heightArr,minHeight){

for(var i=0;i<heightArr.length;i++){

if(heightArr[i]==minHeight){

return i;

}

}

}

function getChildElement(parent,content){

var contentArr=[];

var allcontent=parent.getElementsByTagName("*");

for(var i=0;i<allcontent.length;i++){

if(allcontent[i].className==content){

contentArr.push(allcontent[i]);

}

}

return contentArr;

}

好了,關(guān)于js實現(xiàn)圖片自動加載的瀑布流效果代碼到此給大家介紹完了,希望對大家有所幫助!

更多信息請查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機網(wǎng)站地址:JavaScript實現(xiàn)圖片自動加載的瀑布流效果

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)