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 DOM操作小结与实例
Jan 07 Javascript
firefox下input type=&quot;file&quot;的size是多大
Oct 24 Javascript
js超时调用setTimeout和间歇调用setInterval实例分析
Jan 28 Javascript
JavaScript中匿名函数的用法及优缺点详解
Jun 01 Javascript
JavaScript模板引擎Template.js使用详解
Dec 15 Javascript
解决AngualrJS页面刷新导致异常显示问题
Apr 20 Javascript
angularjs select 赋值 ng-options配置方法
Feb 28 Javascript
解决vue-cli项目打包出现空白页和路径错误的问题
Sep 04 Javascript
Bootstrap4 gulp 配置详解
Jan 06 Javascript
vue 解决路由只变化参数页面组件不更新问题
Nov 05 Javascript
Vue实现按钮级权限方案
Nov 21 Javascript
Javascript设计模式之原型模式详细
Oct 05 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
实用函数3
2007/11/08 PHP
PHP上传文件时文件过大$_FILES为空的解决方法
2013/11/26 PHP
PHP使用xmllint命令处理xml与html的方法
2014/12/15 PHP
一波PHP中cURL库的常见用法代码示例
2016/05/06 PHP
PHP sleep()函数, usleep()函数
2016/08/25 PHP
PHP数据对象PDO操作技巧小结
2016/09/27 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
2019/10/10 PHP
javascript 动态添加事件代码
2008/11/30 Javascript
js一组验证函数
2008/12/20 Javascript
Jquery替换已存在于element上的event的方法
2010/03/09 Javascript
javascript自动给文本url地址增加链接的方法分享
2014/01/20 Javascript
jQuery实现仿Alipay支付宝首页全屏焦点图切换特效
2015/05/04 Javascript
js实现文本框只允许输入数字并限制数字大小的方法
2015/08/19 Javascript
jQuery的Read()方法代替原生JS详解
2016/11/08 Javascript
node安装--linux下的快速安装教程
2017/03/21 Javascript
使用JavaScript实现在页面中显示距离2017年中秋节的天数
2017/09/26 Javascript
vue渲染时闪烁{{}}的问题及解决方法
2018/03/28 Javascript
前端深入理解Typescript泛型概念
2020/03/09 Javascript
原生js实现自定义消息提示框
2020/11/19 Javascript
Python基本语法经典教程
2016/03/11 Python
python2.7的编码问题与解决方法
2016/10/04 Python
django缓存配置的几种方法详解
2018/07/16 Python
python3实现表白神器
2019/04/09 Python
python如何爬取网站数据并进行数据可视化
2019/07/08 Python
Jupyter 无法下载文件夹如何实现曲线救国
2020/04/22 Python
仿CSDN Blog返回页面顶部功能实现原理及代码
2013/06/30 HTML / CSS
香港个人化生活购物网站:Ballyhoo Limited
2016/09/10 全球购物
乐天旅游台湾网站:Rakuten Travel TW
2017/06/01 全球购物
通往英国高街的商店橱窗:Down Your High Street
2020/07/19 全球购物
创先争优活动承诺书
2014/08/30 职场文书
综合办公室主任岗位职责
2015/04/01 职场文书
小学生法制教育心得体会
2016/01/14 职场文书
导游经典开场白——导游词
2019/04/17 职场文书
python如何利用traceback获取详细的异常信息
2021/06/05 Python
总结一些Java常用的加密算法
2021/06/11 Java/Android
JavaScript实现队列结构过程
2021/12/06 Javascript