又一款網頁瀑布流效果,可以實現圖片的無限載入。基於時下流行的HTML5技術編寫而成,演示頁面中一共調用了7張圖片,為了演示方便,這裡讓其隨滾動條的滾動自動循環顯示,這樣大家更能清楚的看明白瀑布流的效果。除了實現瀑布流,還加入了CSS5的圖片修飾效果,例如圖片的圓角邊框、圖片陰影立體效果等,是學習瀑布流的好素材 。 複製程式碼程式碼如下: jQuery無制限追加ダウンロード瀑布流 <br>/* 标签重定义 */ <br>body{padding:0;margin:0;background:#ddd url(/jscss/demoimg/201312/bg55.jpg)repeat;} <br>img{border: none;} <br>a{text-decoration:none;color:#444;} <br>a:hover{color:#999;} <br>#title{width:600px;margin:20px auto;text- align:center;} <br>/* 定义关键帧 */ <br>@-webkit-keyframes shade{ <br>from{opacity:1;} <br>15%{opacity:0.4;} <br>to {opacity:1;} <br>} <br>@-moz-keyframes shade{ <br>from{opacity:1;} <br>15%{opacity:0.4;} <br>to{opacity:1; } <br>} <br>@-ms-keyframes shade{ <br>from{opacity:1;} <br>15%{opacity:0.4;} <br>to{opacity:1;} <br>} <br>@-o-keyframes shade{ <br>from{opacity:1;} <br>15%{opacity:0.4;} <br>to{opacity:1;} <br>} <br>@keyframes shade{ <br>from{opacity:1;} <br>15%{opacity:0.4;} <br>to{opacity:1;} <br>} <br>/* Wrap */ <br>#wrap {width:auto;height:auto;margin:0 auto;position:relative;} <br>#wrap .box{width:280px;height:auto;padding:10px;border:none;float:left;} <br>#wrap .box .info{width:280px;height:auto;border-radius:8px;box-shadow:0 0 11px #666;background:#fff;} <br>#wrap .box .info .pic{ width:260px;height:auto;margin:0 auto;padding-top:10px;} <br>#wrap .box .info .pic:hover{ <br>-webkit-animation:shade 3s easy-in-out 1 ; <br>-moz-animation:shade 3s easy-in-out 1; <br>-ms-animation:shade 3s easy-in-out 1; <br>-o-animation:shade 3s easy-in-out 1; <br>アニメーション:シェード 3s イーズインアウト 1; <br>} <br>#wrap .box .info .pic img{width:260px;border-radius:3px;} <br>#wrap .box .info .title{width:260px;height:40px;margin: 0 auto;line-height:40px;text-align:center;color:#666;font-size:18px;font-weight:bold;overflow:hidden;} <br> <br>window.onload = function(){ <br>//运行瀑布流主関数数 <br>PBL('wrap','box'); <br>//模拟数据 <br>var data = [{'src':'1.jpg','title':'图片标题'},{'src':'2.jpg','title': '图片标题'},{'src':'3.jpg','title':'图片标题'},{'src':'4.jpg','title':'图片标题'},{' src':'5.jpg','title':'图片标题'},{'src':'6.jpg','title':'图片标题'},{'src':'7.jpg' ,'title':'图片标题'}]; <br>//設置滚アニメーション追加 <br>window.onscroll = function(){ <br>//校验数据请要求 <br>if(getCheck()){ <br>var Wrap = document.getElementById('wrap '); <br>for(i in data){ <br>//创建box <br>var box = document.createElement('div'); <br>box.className = 'ボックス'; <br>wrap.appendChild(box); <br>//创建info <br>var info = document.createElement('div'); <br>info.className = '情報'; <br>box.appendChild(info); <br>//创建pic <br>var pic = document.createElement('div'); <br>pic.className = 'pic'; <br>info.appendChild(pic); <br>//创建img <br>var img = document.createElement('img'); <br>img.src = '/jscss/demoimg/201312/' data[i].src; <br>img.style.height = 'auto'; <br>pic.appendChild(img); <br>//创建タイトル <br>var title = document.createElement('div'); <br>title.className = 'タイトル'; <br>info.appendChild(タイトル); <br>//创建a标记 <br>var a = document.createElement('a'); <br>a.innerHTML = data[i].title; <br>title.appendChild(a); <br>} <br>PBL('ラップ','ボックス'); <br>} <br>} <br>} <br>/**<br>* ウォーターフォールフローのメイン関数 <br>* @param Wrap [Str] 外部要素の ID <br>* @param box [Str] 各ボックスのクラス名 <br>*/ <br>function PBL(wrap,box){ <br>//1.获得外层および每一个box <br>var ラップ = document.getElementById(wrap); <br>var box = getClass(wrap,box); <br>//2.画面表示可能な列数を取得します <br>var boxW = boxs[0].offsetWidth; <br>varcolsNum = Math.floor(document.documentElement.clientWidth/boxW); <br>wrap.style.width = boxW*colsNum 'px';//外層赋值宽度 <br>//3.循環出力すべてのボックス并按照瀑布流排列 <br>var eachH = [];/ /定数一列の高さ <br>for (var i = 0; i <boxs.length i></boxs.length>if(i<colsnum></colsnum>everyH[i] = boxs[i ].オフセット高さ; <br>}else{ <br>var minH = Math.min.apply(null,everyH);//最小列の高さを取得します <br>var minIndex = getIndex(minH,everyH); //最小列のインデックスを取得 <br>getStyle(boxs[i],minH,boxs[minIndex].offsetLeft,i); <br>everyH[minIndex] = boxs[i].offsetHeight;//最小列の高さを更新 <br>} <br>} <br>} <br>/**<br>* クラス要素を取得 <br>* @param warp [Obj] 外層 <br>* @param className [Str] クラス名 <br>*/ <br>function getClass(wrap,className){ <br>var obj = Wrap.getElementsByTagName('*'); <br>var arr = []; <br>for(var i=0;i<obj.length></obj.length>if(obj[i].className == className){ <br>arr.push(obj[i]); <br>} <br>} <br>arr を返します。 <br>} <br>/**<br>* 最小の列のインデックスを取得します <br>* @param minH [Num] 最小の高さ <br>* @param eachH [Arr] すべての列の高さの配列 <br>*/ <br>function getIndex(minH,everyH){ <br>for(index in eachH){ <br>if (everyH[index] == minH ) return索引; <br>} <br>} <br>/**<br>* データリクエストの検証 <br>*/ <br>function getCheck(){ <br>var documentH = document.documentElement.clientHeight; <br>varscrollH = document.documentElement.scrollTop || document.body.scrollTop; <br>return documentHscrollH>=getLastH() ?true:false; <br>} <br>/**<br>* 最後のボックスが配置されている列の高さを取得します <br>*/ <br>function getLastH(){ <br>var Wrap = document.getElementById('wrap'); <br>var boxs = getClass(wrap,'box'); <br>return boxs[boxs.length-1].offsetTop boxs[boxs.length-1].offsetHeight; <br>} <br>/**<br>* 読み込みスタイルを設定します <br>* @param box [obj] ボックスを設定します <br>* @param top [Num] ボックスの上部の値 <br>* @param left [Num] 左の値ボックスの <br>* @param Index [Num] ボックスの番号<br>*/ <br>var getStartNum = 0;//設置请要求追加配信の条数の位置 <br>function getStyle(box,top,left,index){ <br>if (getStartNum>=index) return; <br>$(box).css({ <br>'position':'absolute', <br>'top':top, <br>"left":left, <br>"opacity":"0" <br>}); <br>$(box).stop().animate({ <br>"不透明度":"1" <br>},999); <br>getStartNum =index;//更新要求データの条数位置 <br>} <br> 瀑布流效果的学习笑顔で。 セクション> 图片标题 图片标题 图片标题 图片标题 图片标题 图片标题 图片标题