Ajax实例-固定列数的瀑布流
来源:互联网 发布:网络犯罪防范手段 编辑:程序博客网 时间:2024/05/16 19:42
前端页面:
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> *{ margin: 0; padding: 0; } body{ background: #EDEDED; } #ul1{ width: 1000px; margin: 0 auto; list-style: none; overflow: hidden; background: #fff; } #ul1 li{ width: 240px; float: left; margin: 0 5px; padding: 20px 0; } #ul1 li div{ width: 220px; padding: 9px; border: 1px solid #999; margin-bottom: 10px; } #ul1 li div img{ width: 220px; display: block; } </style> <script src="ajax.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> window.onload=function(){ var oUl=document.getElementById("ul1"); var aLi=oUl.getElementsByTagName('li'); var iLen=aLi.length; var ipage=1; var flag=true;//定义一个开关,用于控制页面数据的加载 getList(); //初始加载第一页(cpage=1)的数据 function getList(){ ajax('get','getPics.php','cpage='+ipage,function(data){ var data=JSON.parse(data);//字符串转对象 if (!data.length) { //数据加载完成 return; } var leng=data.length; for (var i=0; i<leng; i++) {//循环每个数据,每次都往最短的li里添加数据 var _index=getShort();//最短li的索引 var oDiv=document.createElement('div'); var oImg=document.createElement('img'); oImg.src=data[i].preview;//预览图 oImg.style.height=220*data[i].height/data[i].width+'px'; //换算后的预览图高度 oDiv.appendChild(oImg); var oP=document.createElement('p'); oP.innerHTML=data[i].title; oDiv.appendChild(oP); aLi[_index].appendChild(oDiv); //往最短的li里面添加数据 } //循环结束之后(本页所有数据加载完成之后)才能打开开关,才可加载下一页 flag=true; }) } //滚动鼠标触发 window.onscroll=function(){ var _index=getShort(); var oLi=aLi[_index]; var scrollTop=document.documentElement.scrollTop || document.body.scrollTop; //当 最短li的高度加上到页面的距离 小于 滚动条高度加上屏幕的高度 时加载第二页(cpage=1)的数据 if (getTop(oLi)+oLi.offsetHeight < document.documentElement.clientHeight+scrollTop) { if (flag) { flag=false;//关上开关,防止在当前页面加载完成前继续加载其他页面 ipage++;//加载下一页数据 getList(); } } } //获取最短li的索引值 function getShort(){ var index=0; var ih=aLi[index].offsetHeight; for (var i=1; i<iLen; i++) { if (aLi[i].offsetHeight<ih) { index=i; ih=aLi[i].offsetHeight; } } return index; } //获取元素到页面最顶端的距离 function getTop(obj){ var iTop=0; while(obj){ iTop+=obj.offsetTop; obj=obj.offsetParent; } return iTop; } } </script> </head> <body> <ul id="ul1"> <li></li> <li></li> <li></li> <li></li> </ul> </body></html>
php代码:
<?phpheader('Content-type:text/html; charset="utf-8"');/*API: getPics.php 参数 cpage : 获取数据的页数*/$cpage = isset($_GET['cpage']) ? $_GET['cpage'] : 1;$url = 'http://www.wookmark.com/api/json/popular?page=' . $cpage;$content = file_get_contents($url);$content = iconv('gbk', 'utf-8', $content);echo $content;?>
返回数据:
[ {"id":"630642", "referer":"https:\/\/www.behance.net\/gallery\/10983193\/Clara-Daniel", "url":"http:\/\/www.wookmark.com\/image\/630642\/clara-daniel-on", "width":"600", "height":"513", "image":"http:\/\/www.wookmark.com\/images\/original\/630642_wookmark.jpg", "preview":"http:\/\/www.wookmark.com\/images\/thumbs\/630642_wookmark.jpg"}, …]
Ajax.js:
function ajax(method, url, data, success) { var xhr = null; try { xhr = new XMLHttpRequest(); } catch (e) { xhr = new ActiveXObject('Microsoft.XMLHTTP'); } if (method == 'get' && data) { url += '?' + data; } xhr.open(method,url,true); if (method == 'get') { xhr.send(); } else { xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded'); xhr.send(data); } xhr.onreadystatechange = function() { if ( xhr.readyState == 4 ) { if ( xhr.status == 200 ) { success && success(xhr.responseText); } else { alert('出错了,Err:' + xhr.status); } } }}
0 0
- Ajax实例-固定列数的瀑布流
- AJAX实例--瀑布流
- AJAX固定列瀑布流布局及实现
- 仿淘宝/蘑菇街形式,瀑布流效果 -- 固定列数
- js结合jquery实现的ajax瀑布流加载实例
- 显示图片的瀑布流(列数不固定)
- imageView2列 瀑布流
- ajax+script的瀑布流写法
- ajax-瀑布流效果
- Ajax瀑布流
- 瀑布流ajax
- ajax瀑布流分页
- ajax瀑布流
- ajax-瀑布流
- 瀑布流的实现原理与实例
- 固定GridView的列
- 瀑布流实例
- Android瀑布流实例
- 汇编常见伪指令
- 使用query禁用、启用按钮(button)
- Android中使用WebView与JS交互全解析
- YARN应用生命周期
- 【C/C++和指针】著名的《const的思考》
- Ajax实例-固定列数的瀑布流
- 1622-5 孔富晨 总结《2016年12月1日》 【连续第62天总结】
- 如何清空输入输出缓存区
- CSMA/CA
- angularjs和jquery前端发送以http请求formdata数据
- 反射类加载和垃圾回收
- NumPy之三:拷贝和视图
- raw socket模拟TCP三次握手
- Android应用ViewPager和TabLayout动态加载Fragment,并实现view和tab动态刷新。