Ajax实现瀑布流图片加载
来源:互联网 发布:金融数据挖掘 马超群 编辑:程序博客网 时间:2024/05/16 16:23
布局
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title> <style type="text/css"> body,ul{padding: 0;margin: 0} #content{width: 1030px;margin:100px auto;} #content li{list-style:none;width: 247px;float: left;margin-right:10px; } #content li div{border: 1px solid #000000;padding: 10px;margin-bottom: 10px;} #content li div img{width: 225px;display: block} </style> <script src="js/ajax.js"></script> <script src="js/JSON.js"></script> <script type="text/javascript"> window.onload = function () { var aLi=document.getElementsByTagName('li'); var iLen=aLi.length; var cpage=1; var isLoaded=false; loadImg(); function loadImg(){ ajax('get', 'getPics.php', 'cpage='+cpage, function (data) { var respondData = JSON.parse(data); if(respondData.length==0){//没数据了 return; } for (var i = 0; i < respondData.length; i++) { var oDiv=document.createElement('div'); var oImg=document.createElement('img'); oImg.src=respondData[i].preview; //设置图片宽高 oImg.style.width=225+'px'; oImg.style.height=respondData[i].height*(225/respondData[i].width)+'px'; var oP=document.createElement('p'); oP.innerHTML=respondData[i].title; oDiv.appendChild(oImg); oDiv.appendChild(oP); var _index=getShortestLi();//获取到高度最小的li的索引 aLi[_index].appendChild(oDiv); } isLoaded=true;//加载完成 }); } window.onscroll=function(){ var _index=getShortestLi(); var oLi=aLi[_index]; var scrollTop=document.documentElement.scrollTop||document.body.scrollTop; //鼠标滚动的高度超过最短的li高度的时候加载下一页 if(getTop(oLi)+oLi.offsetHeight<document.documentElement.clientHeight+scrollTop){ if(isLoaded){ isLoaded=false; cpage++; document.title=cpage; loadImg(); } } } function getShortestLi(){//获取高度最短的li var index=0; var ih=aLi[index].offsetHeight; for(var i=0;i<iLen;i++){ if(ih>aLi[i].offsetHeight){ ih=aLi[i].offsetHeight; index=i; } } return index; } function getTop(obj) {//获取li底部到页面顶部的高度 var iTop=0; while(obj){ iTop+=obj.offsetTop; obj=obj.offsetParent; } return iTop; } } </script></head><body><ul id="content"> <li></li> <li></li> <li></li> <li></li></ul></body></html>
</pre><pre name="code" class="html">封装好的Ajax源代码:ajax.js
<pre name="code" class="javascript">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);}}}}
</pre>PHP后台代码:getPics.php<pre>
<pre name="code" class="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;?>
0 0
- Ajax实现瀑布流图片加载
- RecyclerView瀑布流加载图片实现
- 瀑布流加载图片
- ajax瀑布流加载技术
- js结合jquery实现的ajax瀑布流加载实例
- jq.ajax+php+mysql实现瀑布流缓冲加载数据
- Ajax实现瀑布流动态加载网页
- js 瀑布流加载图片
- 使用MultiColumnPullToRefreshListView实现瀑布流加载网络图片
- StaggeredGridView+universal-image-loader加载网路图片实现瀑布流
- StaggeredGridView+universal-image-loader加载网路图片实现瀑布流
- 使用串行线程实现图片瀑布流加载
- javascript实现瀑布流效果及图片加载样式
- 使用MultiColumnPullToRefreshListView实现瀑布流加载网络图片
- 瀑布流 ajax 预加载 json
- android 瀑布流图片实现
- 实现瀑布流排布图片
- 图片瀑布流的实现
- 暑期工作日志-Day5
- 大数操作
- [gym101047K Training with Phuket's larvae] 给定N条边求能组成三角形的最小面积
- 七层网络模型与四层网络模型以及每层网络协议
- 小码哥哥 FastJson--阿里巴巴公司开源的速度最快的Json和对象转换工具
- Ajax实现瀑布流图片加载
- 最长非递减子序列的应用
- ubuntu安装搜狗输入法出现两个图标和两个输入框的解决方式
- 树状数组求区间和
- H264学习(四)帧内预测
- 面向对象_创建对象做了哪些事情?
- 新装Ubuntu14.04 LTS环境配置
- (实验)(要写完) Hadoop集群搭建
- linux系统下配置eclipse编译环境为c++11