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 相关文章推荐
用js怎么把&amp;字符换成&quot;&amp;amp:&quot;
Oct 19 Javascript
使用jscript实现二进制读写脚本代码
Jun 09 Javascript
一些常用的JS功能函数(2009-06-04更新)
Jun 04 Javascript
jQuery easyui datagrid动态查询数据实例讲解
Feb 26 Javascript
javascript 获取图片尺寸及放大图片
Sep 04 Javascript
正负小数点后两位浮点数实现原理及代码
Sep 06 Javascript
谷歌地图打不开的解决办法
Aug 07 Javascript
node.js中的fs.mkdir方法使用说明
Dec 17 Javascript
使用javascript将时间转换成今天,昨天,前天等格式
Jun 25 Javascript
原生js获取元素样式的简单方法
Aug 06 Javascript
深入解析Vue 组件命名那些事
Jul 18 Javascript
看看“疫苗查询”小程序有温度的代码
Jul 31 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
phpfans留言版用到的install.php
2007/01/04 PHP
PHP文件上传原理简单分析
2011/05/29 PHP
PHP将session信息存储到数据库的类实例
2015/03/04 PHP
php PDO判断连接是否可用的实现方法
2017/04/03 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
2019/10/21 PHP
JavaScript 盒模型 尺寸深入理解
2012/12/31 Javascript
js实现点击注册按钮开始读秒倒计时的小例子
2013/05/11 Javascript
jQuery中index()的用法分析
2014/09/05 Javascript
angularJS结合canvas画图例子
2015/02/09 Javascript
JavaScript删除数组元素的方法
2015/03/20 Javascript
jQuery地图map悬停显示省市代码分享
2015/08/20 Javascript
基于jQuery实现简单的折叠菜单效果
2015/11/23 Javascript
JS正则替换掉小括号及内容的方法
2016/11/29 Javascript
使用JavaScript触发过渡效果的方法
2017/01/19 Javascript
Angular4.x Event (DOM事件和自定义事件详解)
2018/10/09 Javascript
js实现简单五子棋游戏
2020/05/28 Javascript
使用jQuery实现购物车
2020/10/29 jQuery
wxpython 学习笔记 第一天
2009/03/16 Python
浅谈Python中的闭包
2015/07/08 Python
使用Python写一个贪吃蛇游戏实例代码
2017/08/21 Python
python 读取txt中每行数据,并且保存到excel中的实例
2018/04/29 Python
python3.4.3下逐行读入txt文本并去重的方法
2018/04/29 Python
python分割一个文本为多个文本的方法
2019/07/22 Python
使用Python实现文字转语音并生成wav文件的例子
2019/08/08 Python
Win10+GPU版Pytorch1.1安装的安装步骤
2019/09/27 Python
Python实现队列的方法示例小结【数组,链表】
2020/02/22 Python
Europcar葡萄牙:葡萄牙汽车和货车租赁
2017/10/13 全球购物
生产管理的三大手法
2013/11/11 职场文书
军神教学反思
2014/02/04 职场文书
改作风抓落实促发展心得体会
2014/09/10 职场文书
2014乡镇干部对照检查材料思想汇报
2014/09/26 职场文书
卫校毕业生自我鉴定
2014/09/28 职场文书
工作自我评价范文
2015/03/05 职场文书
世界文化遗产导游词
2019/08/07 职场文书
css 中多种边框的实现小窍门
2021/04/07 HTML / CSS
python 实现图与图之间的间距调整subplots_adjust
2021/05/21 Python