js實(shí)現(xiàn)仿百度瀑布流的方法
本文實(shí)例講述了js實(shí)現(xiàn)仿百度瀑布流的方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>仿百度圖片瀑布流</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script src="js/jquery.min.js"></script>
<style>
*{margin:0; padding:0;}
#container{
width: 1000px;
border:1px solid #f00;
margin: 50px auto;
position: relative;
}
#container img{
position: absolute;
}
#loader{
width: 100%;
height: 60px;
background: url(loader.gif) no-repeat center;
position: fixed;
bottom: 0;
left: 0;
}
</style>
</head>
<script type="text/javascript">
$(function(){
var oContainer=$('#container');
var oLoader=$('#loader');
var iWidth=200;//列寬
var iSpace=10;//列數(shù)
var iOuterWidth=iWidth+iSpace;
var sUrl = 'localhost/api/json/popular?callback=?';
var iCell=0;
var iPage=0;
var arrL=[];
var arrT=[];
var iBtn=true;
function setCells(){
iCell= Math.floor($(window).innerWidth()/iOuterWidth);
if(iCell < 3){
iCell =3;
}
if(iCell >6){
iCell =6;
}
oContainer.css('width',iOuterWidth*iCell-iSpace);
}
setCells();
for(var i=0;i < iCell; i++){
arrL.push(i*iOuterWidth);
arrT.push(0);
}
//console.log(arrL)
getData()
function getData(){
if(iBtn){
iBtn =false
oLoader.show();
$.getJSON(sUrl,'page='+iPage,function(data){
$.each(data,function(i,obj){
var $img =$('<img>');
$img.attr('src',obj.preview);
var iHeight= iWidth /obj.width * obj.height;
var index=getMin();
$img.appendTo(oContainer);
$img.css({width:iWidth,height: iHeight});
$img.css({top:arrT[index],left: arrL[index]})
arrT[index]+=iHeight +10;
oLoader.hide();
})
iPage++;
iBtn=true;
})
}
}
$(window).on('resize',function(){
var iOldCell= iCell;
setCells();
var iH = $(window).scrollTop()+$(window).innerHeight();
var iMinIndex= getMin();
if(arrT[iMinIndex]+oContainer.offset().top < iH){
getData();
}
if(iOldCell == iCell) return ;
arrT=[];
arrL=[];
for(var i=0;i < iCell; i++){
arrL.push(i*iOuterWidth);
arrT.push(0);
}
var $img = oContainer.find('img');
$img.each(function(index,obj){
var index=getMin();
$(this).animate({top:arrT[index],left: arrL[index]})
arrT[index]+=$(this).height() +10;
})
})
$(window).on('scroll',function(){
var iH = $(window).scrollTop()+$(window).innerHeight();
var iMinIndex= getMin();
if(arrT[iMinIndex]+oContainer.offset().top < iH){
getData();
}
})
function getMin(){
var iv= arrT[0];
var _index=0;
for(var i=0; i<arrT.length; i++){
if(arrT[i] < iv){
iv= arrT[i];
_index=i;
}
}
return _index ;
}
})
</script>
<body>
<div id="top">仿百度圖片瀑布流</div>
<!--標(biāo)題 e -->
<div id="container"></div>
<div id="loader"></div>
<!--效果塊 e -->
</body>
</html>
希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。
- js實(shí)現(xiàn)的美女瀑布流效果代碼
- javascript自適應(yīng)寬度的瀑布流實(shí)現(xiàn)思路
- 原生JS實(shí)現(xiàn)響應(yīng)式瀑布流布局
- 解析瀑布流布局:JS+絕對(duì)定位的實(shí)現(xiàn)
- 純js實(shí)現(xiàn)瀑布流展現(xiàn)照片(自動(dòng)適應(yīng)窗口大小)
- js實(shí)現(xiàn)瀑布流的一種簡(jiǎn)單方法實(shí)例分享
- js實(shí)現(xiàn)瀑布流的三種方式比較
- 純js實(shí)現(xiàn)瀑布流布局及ajax動(dòng)態(tài)新增數(shù)據(jù)
- javascript實(shí)現(xiàn)瀑布流加載圖片原理
- JavaScript實(shí)現(xiàn)瀑布流圖片效果
相關(guān)文章
JavaScript實(shí)現(xiàn)瀑布流布局詳解
這篇文章主要為大家詳細(xì)介紹了JavaScript瀑布流的實(shí)現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-07-07
js中匿名函數(shù)的創(chuàng)建與調(diào)用方法分析
這篇文章主要介紹了js中匿名函數(shù)的創(chuàng)建與調(diào)用方法,詳細(xì)分析了匿名函數(shù)的原理與用法,以及閉包的原理分析,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-12-12
JS+CSS實(shí)現(xiàn)一個(gè)氣泡提示框
氣泡提示框牽扯到的技術(shù)有:JS響應(yīng)鼠標(biāo)的事件、純CSS制作三角形,附截圖及示例代碼,感興趣的朋友可以參考下2013-08-08
微信小程序跨頁(yè)面數(shù)據(jù)傳遞事件響應(yīng)實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了微信小程序跨頁(yè)面數(shù)據(jù)傳遞事件響應(yīng)實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
JavaScript獲取服務(wù)器時(shí)間的方法詳解
這篇文章主要介紹了JavaScript獲取服務(wù)器時(shí)間的方法,結(jié)合實(shí)例形式詳細(xì)分析了javascript基于ajax獲取服務(wù)器時(shí)間的相關(guān)操作技巧,需要的朋友可以參考下2016-12-12
javascript 使td內(nèi)容不換行不撐開(kāi)
javascript 使td內(nèi)容不換行不撐開(kāi)如何實(shí)現(xiàn),本文將詳細(xì)介紹,需要了解的朋友可以參考下2012-11-11
js對(duì)象實(shí)例詳解(JavaScript對(duì)象深度剖析,深度理解js對(duì)象)
下面小編就為大家?guī)?lái)一篇js對(duì)象實(shí)例詳解(JavaScript對(duì)象深度剖析,深度理解js對(duì)象)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09

