首页 > 代码库 > JQuery仿淘宝滚动加载图片

JQuery仿淘宝滚动加载图片

用 JQuery 制作随着显示页面的滚动条的滚动动态加载图片,适用于图片太多的页面,在访问网页时,可以先只加载第一屏要显示的图片,当用户进行向下滚动查看页面的时候,动态去加载这些图片,好处是减少页面第一次显示的流量,加快页面第一屏显示的速度。利辛县档案局

主要原理:通过 setInterval 定时事件,检测滚动条的位置,再进行 ajax 请求服务端数据,加载图片到页面上。

<script type="text/javascript">var iHeight = 0;var iTop = 0;var clientHeight = 0;var iIntervalId = null;var itemsSize = 0;var pageNo = 1;   // 当前页数,默认设为第 1 页var pageSize = 4; // 每页显示的数量getPageHeight();// 添加定时检测事件,每2秒检测一次iIntervalId = setInterval("_onScroll();", 2000);// 取得当前页面显示所占用的高度function getPageHeight() {  if(document.body.clientHeight && document.documentElement.clientHeight) {      clientHeight = (document.body.clientHeight < document.documentElement.clientHeight) ? document.body.clientHeight : document.documentElement.clientHeight;            } else {      clientHeight = (document.body.clientHeight > document.documentElement.clientHeight) ? document.body.clientHeight : document.documentElement.clientHeight;        }  iHeight = Math.max(document.body.scrollHeight,document.documentElement.scrollHeight);}// 调用ajax取服务端数据function show() {  pageNo++;  $.ajax({    url: ‘img.php?p=‘+pageNo+‘&r=‘+Math.random(),    type: ‘GET‘,    dataType: ‘text‘,    timeout: 4000,    beforeSend: showLoadingImg,    error: showFailure,    success: showResponse  });}function showLoadingImg() {  $(‘#showmore‘).html(‘<a class="handle" href="javascript:show()"><img src="http://www.mamicode.com/images_test/loading.gif" height="32px" />显示更多结果</a>‘);}function showFailure() {  $(‘#showmore‘).html(‘<font color=red> 获取查询数据出错 </font>‘);}// 根据ajax取出来的json数据转换成htmlfunction showResponse(responseData) {  var returnjson = eval("("+responseData+")");  itemsSize = returnjson.items.length;  var nextpagehtml = ‘‘;  var pageOffset = (pageNo-1)*pageSize + 1;  for(i=0; i<itemsSize; i++) {    nextpagehtml += ‘<ul class="item">‘;    nextpagehtml += ‘<li class="i_thumb"><a href="http://www.xuekaifa.com" target="_blank" title="‘+ returnjson.items[i].name +‘"><img src="http://www.mamicode.com/‘+ returnjson.items[i].pic +‘" alt="‘+ returnjson.items[i].name +‘" /></a></li>‘;    nextpagehtml += ‘<li class="i_title"><span class="order">‘+ (pageOffset + i) +‘</span><a href="http://www.xuekaifa.com" target="_blank" title="‘+ returnjson.items[i].name +‘">‘+ returnjson.items[i].name +‘</a></li>‘;                                        nextpagehtml += ‘</ul>‘;  }  nextpagehtml += ‘<div class="clear"></div>‘;  $(‘#items‘).html($(‘#items‘).html() + nextpagehtml);  // 当前页码数小于3页时继续显示更多提示框  if(pageNo < 3) {    $(‘#showmore‘).html(‘<a class="handle" href="javascript:show()">显示更多结果</a>‘);  } else {    clearInterval(iIntervalId);    $(‘#showmore‘).hide();  }}// 判断滚动条是否到达底部function reachBottom() {  var scrollTop = 0;  if(document.documentElement && document.documentElement.scrollTop) {      scrollTop = document.documentElement.scrollTop;    } else if (document.body) {      scrollTop = document.body.scrollTop;    }  if((scrollTop > 0) && (scrollTop + clientHeight == iHeight)) {    return true;    } else {      return false;   }}// 检测事件,检测滚动条是否接近或到达页面的底部区域,0.99是为了更接近底部时function _onScroll() {  iTop = document.documentElement.scrollTop + document.body.scrollTop;  getPageHeight();  if(((iTop+clientHeight)>parseInt(iHeight*0.99))||reachBottom()) {    if(pageNo >= 3) {      clearInterval(iIntervalId);      $(‘#showmore‘).hide();      return;    }    show();  }};</script>

JQuery仿淘宝滚动加载图片