首页 > 代码库 > 瀑布流

瀑布流

技术分享

  1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"  2 "http://www.w3.org/TR/html4/strict.dtd">  3   4 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">  5     <head>  6         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  7         <title>2.ajax瀑布流</title>  8         <meta name="author" content="Administrator" />  9         <!-- Date: 2014-12-20 --> 10         <script src=http://www.mamicode.com/"ajax.js"></script> 11         <script src=http://www.mamicode.com/"json2.js"></script> 12         <style> 13             *{margin:0;padding:0;font-size:13px;font-family: microsoft yahei} 14             li{list-style:none;float:left;margin:0 9px;width: 252px;} 15             ul{width:1080px;margin:0 auto} 16             ul li div{margin-bottom:10px;border:1px solid black;padding: 10px;} 17         </style> 18         <script> 19             window.onload=function(){ 20                 var aLi=document.getElementsByTagName(li); 21                 var iLen=aLi.length; 22                 var iPage=1; 23                 var b=true; 24                  25                 getList(); 26                 function getList(){ 27                         ajax(get,getPics.php,cpage=+iPage,function(data){ 28                          var data=http://www.mamicode.com/JSON.parse(data); 29                           30                          if(!data) return; //如果发现data中没有值了,立马返回出去,后续代码不再执行 31                           32                          var oImage=new Image(); 33                          var iNow=0; 34      35                          xunlei(); 36                          function xunlei(){ 37                               38                              //初始化,先给div加到li中,并设置内容为加载中图片 39                              var oDiv=document.createElement(div); 40                             oDiv.innerHTML=<img src="http://www.mamicode.com/img/loading.jpg"/>; 41                             var _index=getShort(); 42                             if( aLi[_index].innerHTML.indexOf(加载中)!=-1 ){ 43                                 aLi[_index].innerHTML=‘‘ 44                             } 45                             aLi[_index].appendChild( oDiv ); 46                               47                              //第一张图片加载完 48                              oImage.src=http://www.mamicode.com/data[iNow].preview; 49                               50                              oImage.onload=function(){ 51                                  iNow++; 52                                       if(iNow<data.length){ 53                                           oDiv.innerHTML=<a href="http://www.mamicode.com/+data[iNow].url+"><img src="http://www.mamicode.com/+oImage.src+"/></a><p>+data[iNow].title+</p>; 54                                          xunlei();     55                                       } 56                               } 57                               58                          } 59                          /**事情做完了 b为true**/ 60                           b=true; 61                           62                     })  63                 } 64                  65                 /**滚动滚动条,当page1最小一列的li 加载完 进入可视区时   加载第二页**/ 66                 window.onscroll=function(){ 67                      var _index=getShort(); 68                      var scrolltop = document.documentElement.scrollTop || document.body.scrollTop; 69                      if( getPos(aLi[_index]) +aLi[_index].offsetHeight < scrolltop + document.documentElement.clientHeight ){ 70                           71                          /**当b为true的时候,第一页加载完了 开始第二页的加载**/ 72                          if(b){ 73                              b=false; 74                              iPage++; 75                              getList(); 76                          } 77                      } 78                 } 79                  80                  81                 function getPos(obj){ 82                      var iTop=0; 83                      while(obj){ 84                           iTop+=obj.offsetTop; 85                           obj=obj.offsetParent 86                      } 87                      return iTop; 88                 } 89                  90                 function getShort(){ 91                          var index=0; 92                         var iH=aLi[index].offsetHeight; 93                         for(var i=1;i<iLen;i++){ 94                               if( aLi[i].offsetHeight < iH ){ 95                                       index=i 96                               } 97                         } 98                         return index     99                 }100                 101             }102  103         </script>104     </head>105     <body>106             <ul>107                  <li>加载中...</li>108                  <li>加载中...</li>109                  <li>加载中...</li>110                  <li>加载中...</li>111             </ul>112     </body>113 </html>

ajax.js

 1 function ajax(method, url, data, success) { 2     var xhr = null; 3     try { 4         xhr = new XMLHttpRequest(); 5     } catch (e) { 6         xhr = new ActiveXObject(Microsoft.XMLHTTP); 7     } 8      9     if (method == get && data) {10         url += ? + data;11     }12     13     xhr.open(method,url,true);14     if (method == get) {15         xhr.send();16     } else {17         xhr.setRequestHeader(content-type, application/x-www-form-urlencoded);18         xhr.send(data);19     }20     21     xhr.onreadystatechange = function() {22         23         if ( xhr.readyState == 4 ) {24             if ( xhr.status == 200 ) {25                 success && success(xhr.responseText);26             } else {27                 alert(出错了,Err: + xhr.status);28             }29         }30         31     }32 }

getPics.php

 1 <?php 2 header(Content-type:text/html; charset="utf-8"); 3  4 /* 5 API: 6     getPics.php 7  8         参数 9         cpage : 获取数据的页数10 */11 $cpage = isset($_GET[cpage]) ? $_GET[cpage] : 1;12 13 $url = http://www.wookmark.com/api/json/popular?page= . $cpage;14 15 $content = file_get_contents($url);16 $content = iconv(gbk, utf-8, $content);17 18 echo $content;19 20 ?>

 

瀑布流