js实现仿百度瀑布流的方法


Posted in Javascript onFebruary 05, 2015

本文实例讲述了js实现仿百度瀑布流的方法。分享给大家供大家参考。具体实现方法如下:

<!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;//列数
 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> 
 <!--标题 e -->
 <div id="container"></div>
 <div id="loader"></div>
 <!--效果块 e -->
</body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
用jquery实现点击栏目背景色改变
Dec 10 Javascript
JS实现标签页效果(配合css)
Apr 03 Javascript
JS的千分位算法实现思路
Jul 31 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战一)
Aug 21 Javascript
button没写type=button会导致点击时提交
Mar 06 Javascript
Jquery实现Div上下移动示例
Apr 23 Javascript
基于豆瓣API+Angular开发的web App
Jan 02 Javascript
JavaScript Math.floor方法(对数值向下取整)
Jan 09 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
Mar 09 Javascript
javascript实现点击商品列表checkbox实时统计金额的方法
May 15 Javascript
Javascript中的arguments对象
Jun 20 Javascript
微信小程序云开发之数据库操作
May 18 Javascript
JS函数this的用法实例分析
Feb 05 #Javascript
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
Feb 05 #Javascript
js关于命名空间的函数实例
Feb 05 #Javascript
js实现数字每三位加逗号的方法
Feb 05 #Javascript
javascript实现字符串反转的方法
Feb 05 #Javascript
Javascript中拼接大量字符串的方法
Feb 05 #Javascript
jquery操作select方法汇总
Feb 05 #Javascript
You might like
php Sql Server连接失败问题及解决办法
2009/08/07 PHP
php格式化时间戳显示友好的时间实现思路及代码
2014/10/23 PHP
JavaScript 模仿vbs中的 DateAdd() 函数的代码
2007/08/13 Javascript
JS对URL字符串进行编码/解码分析
2008/10/25 Javascript
jquery 1.4.2发布!主要是性能与API
2010/02/25 Javascript
dess中一个简单的多路委托的实现
2010/07/20 Javascript
利用腾讯的ip地址库做ip物理地址定位
2010/07/24 Javascript
23个Javascript弹出窗口特效整理
2011/02/25 Javascript
解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码
2011/05/28 Javascript
jQuery select表单提交省市区城市三级联动核心代码
2014/06/09 Javascript
javascript实现动态加载CSS
2015/01/26 Javascript
微信小程序 animation API详解及实例代码
2016/10/08 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
2017/01/26 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
2017/08/25 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
实例学习JavaScript读取和写入cookie
2018/01/29 Javascript
使用post方法实现json往返传输数据的方法
2019/03/30 Javascript
windows下Virtualenvwrapper安装教程
2017/12/13 Python
python中实现将多个print输出合成一个数组
2018/04/19 Python
Django添加sitemap的方法示例
2018/08/06 Python
python json.loads兼容单引号数据的方法
2018/12/19 Python
python 两个数据库postgresql对比
2019/10/21 Python
Python 实现取多维数组第n维的前几位
2019/11/26 Python
一款纯css3实现的鼠标悬停动画按钮
2014/12/29 HTML / CSS
CSS3中Transition动画属性用法详解
2016/07/04 HTML / CSS
全球最大的在线旅游公司:Expedia
2017/11/16 全球购物
俄罗斯药房连锁店:ASNA
2020/06/20 全球购物
非功能性需求都包括哪些方面
2013/10/29 面试题
新学期决心书
2014/03/11 职场文书
综合办公室主任岗位职责
2014/04/13 职场文书
地理信息科学专业推荐信
2014/09/08 职场文书
市场营销工作计划书
2014/09/15 职场文书
音乐教师个人总结
2015/02/06 职场文书
教师节慰问信
2015/02/15 职场文书
拾金不昧通报表扬范文
2015/05/05 职场文书
2016应届毕业生实习评语
2015/12/01 职场文书