`
davinci_2012
  • 浏览: 13659 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

jquery 滚动条动态图片加载(模拟淘宝商城图片加载)

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

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

  现有 淘宝商城,3366等网站都有应用。

  主要演示代码如下:

<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="images_test/loading.gif" height="32px" />显示更多结果</a>');
}

function showFailure() {
  $('#showmore').html('<font color=red> 获取查询数据出错 </font>');
}

// 根据ajax取出来的json数据转换成html
function 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="'+ 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>



完整源码下载地址:http://www.xuekaifa.com/article/20110119/000414.html
  • 大小: 66.3 KB
分享到:
评论
16 楼 newleague 2011-01-25  
这个图片我的QQ空间很多的,
15 楼 harry_2013 2011-01-24  
JavaCat++ 写道
乌鸦* 写道
lz,你里面的图片我偷去当头像了。

你的头像里的mm也不错呀

很是赞同
14 楼 JavaCat++ 2011-01-24  
乌鸦* 写道
lz,你里面的图片我偷去当头像了。

你的头像里的mm也不错呀
13 楼 JavaCat++ 2011-01-24  
accphc 写道
LZ搞的图片太惹眼了……

同意!
12 楼 folie2006 2011-01-21  
sinopf 写道
如果demo里有这些图片的话我就下载。


是真的有呀。。。我已经下了。。
11 楼 JackBin 2011-01-21  
这个技术很不错,不过没用到
10 楼 乌鸦* 2011-01-21  
lz,你里面的图片我偷去当头像了。
9 楼 xiahps 2011-01-21  
一直想用这种技术,楼主厉害啊。。
8 楼 feiyan35488 2011-01-21  
还是定时查询比较好,在第二屏显示空白图片,scroll到的时候再去查询真正的图片 
7 楼 renwolang521 2011-01-21  
accphc 写道
直接用body的onscroll事件检测呢?!

那样每滚动一像素就会触发,太频繁,浏览器很累的.......页面元素多了,甚至有顿感...
6 楼 sinopf 2011-01-21  
如果demo里有这些图片的话我就下载。
5 楼 accphc 2011-01-21  
LazyLoad.js完全是假“延迟”!费力不讨好的一个插件
详情:http://hi.baidu.com/qiao/blog/item/d476dab487b644638bd4b21d.html
4 楼 gp00142003 2011-01-21  
jquery不是有提供Jquery.LazyLoad.js插件吗?

还有就是用body的onscroll事件监测会比较好。
3 楼 accphc 2011-01-21  
LZ搞的图片太惹眼了……
2 楼 accphc 2011-01-21  
直接用body的onscroll事件检测呢?!
1 楼 gxjljx 2011-01-21  
支持下,强,QQ空间里也用到了这个技术

相关推荐

    ASP.NET+jquery实现AJAX滚动滚动条加载数据的下拉列表控件

    综上所述,结合ASP.NET、jQuery和AJAX,我们可以创建一个动态的下拉列表控件,当用户滚动滚动条时,数据会自动按需加载。这提高了用户界面的响应性,提升了用户体验。在实现过程中,注意合理设计数据加载机制,以...

    基于jquery的自定义滚动条

    5. **插件使用**:有许多现成的jQuery滚动条插件,如`malihu-custom-scrollbar-plugin`、`nanoScroller`等,它们提供了丰富的配置选项和预设样式,可以快速实现自定义滚动条功能。在项目中,可以根据需求选择合适的...

    JavaScript_JQuery_CSS_CSS_DIV漂亮的实例123个

    41. jquery拖动滚动条控制图片滚动及图片放大特效的示例 42. jquery旋转式图片切换并带图片放大功能 43. jQuery漂亮网页右上角双层撕角广告代码 44. jquery漂亮网页布局综合定时器、切换间隔、滚动时间、滚动...

    jquery块滚动条

    3. **动态加载内容(Ajax)**:块滚动条常与Ajax结合使用,当用户滚动到页面底部时,通过Ajax异步加载更多的内容。这不仅可以优化用户体验,还可以减少初次加载时的数据量。 ```javascript $(window).on('scroll', ...

    JQuery页面随滚动条动态加载效果的简单实现(推荐)

    在页面设计上,应引导用户使用标签(TAG)和搜索功能找到目标数据,而滚动条加载更适合于浏览最新数据的场景。 通过这篇文章,我们可以了解到实现动态内容加载并不复杂,利用现有的Jquery库可以轻松地添加这一功能...

    jQuery实现根据滚动条位置加载相应内容功能

    实现jQuery根据滚动条位置加载相应的内容:向下滚动时当内容区域滚动到可视窗口高度的一半时,加载动画内容;向上滚动到相应的内容区域时也重新加载动画内容! 1.实现思路: 先静态布局好HTML结构,使用伪类:hover...

    jquery.nicescroll仿IOS滚动条美化插件.zip

    《jQuery.nicescroll:打造优雅的iOS风格滚动条》 在网页设计中,滚动条作为用户与内容交互的重要元素,其美观性和用户体验至关重要。jQuery.nicescroll插件就是一款专门用于美化滚动条的工具,它能够帮助开发者...

    jquery.nicescroll仿IOS滚动条美化插件

    jQuery.nicescroll 的核心特性就是模拟了苹果设备上的滚动条样式,这种简洁而优雅的设计深受用户喜爱。它提供了透明背景、细长的滑块以及平滑的滚动效果,使得原本生硬的默认滚动条变得更具视觉吸引力。 **2. 全屏...

    图片懒加载svg-loading图片

    3. 图片懒加载实现:阐述如何结合JavaScript(可能是jQuery或其他库)监听滚动事件,判断图片是否进入视口,当达到触发条件时替换占位符为真实的图片,并显示SVG加载动画。 4. 示例代码:提供完整的HTML、CSS和...

    jQuery模拟iPhone下拉滚动条动画特效.rar

    在这个特效中,jQuery被用来监听用户的滚动行为,当用户在页面顶部下拉时,会触发一个模拟的滚动条动画,这通常是移动应用中加载新内容或更新信息的提示。 CSS(Cascading Style Sheets)是用于控制网页样式的语言...

    jquery 实现滚动条下拉时无限加载的简单实例

    总结来说,jQuery 实现滚动条下拉时无限加载的核心步骤包括: 1. 监听滚动事件。 2. 当达到特定滚动位置时,发送异步请求获取新数据。 3. 处理返回的数据,生成 HTML,并插入到页面适当位置。 4. 更新状态变量,以...

    列表框滚动条

    JavaScript库如jQuery或Vue.js提供API来监听滚动事件,进行动态加载数据或执行其他操作。 在Python的Tkinter库中,列表框(Listbox)控件可以与Scrollbar控件结合使用。通过配置Scrollbar的command属性为Listbox的...

    jquery jscrollpane.js滚动窗口微信聊天对话框

    `autoReinitialise`选项确保当聊天内容动态增加时,滚动条能自动调整。`showArrows`则可以开启或关闭滚动条的箭头按钮。 在实际应用中,聊天记录可能会不断更新。为此,我们需要监听新消息的到来,并在插入新消息后...

    拉动滚动条加载数据的jquery代码

    标题中的"拉动滚动条加载数据的jquery代码"指的是在网页中实现无限滚动或者叫滚动加载(Lazy Loading)的一种技术,这种技术通常用于提高用户体验,尤其是处理大数据量时,避免一次性加载所有内容导致页面加载速度变...

    网页模板——基于jQuery实现的彩色网页滚动条代码.zip

    在实际应用中,开发者需要将下载的压缩包解压,找到包含jQuery滚动条插件的文件,例如"jquery.scrollbar.js",并将其引入到HTML页面的`&lt;head&gt;`标签内。同时,也需要将对应的CSS样式文件(如"custom-scrollbar.css")...

    jquery全屏模拟amd官方显卡新能介绍星系滚动代码.zip

    【标题解析】:“jquery全屏模拟amd官方显卡新能介绍星系滚动代码”这个标题提到了几个关键概念。首先,“jquery”指的是JavaScript库jQuery,它简化了HTML文档遍历、事件处理、动画设计和Ajax交互。全屏模拟通常是...

    asp.net+jquery滚动滚动条加载数据的下拉控件

    需求:AJAX滚动滚动条加载数据的下拉列表 控件名称:Webcombo 所用技术:ASP.NET(C#),jQuery,ASP.NET一般处理文件(.ashx) 下拉列表具体实现:用DIV模拟下拉列表,input和图片模拟下拉框。最终结果如下图 先分析...

    100多个JQuery效果示例(实例)div+css+javascrpit

    41. jquery拖动滚动条控制图片滚动及图片放大特效的示例 42. jquery旋转式图片切换并带图片放大功能 43. jQuery漂亮网页右上角双层撕角广告代码 44. jquery漂亮网页布局综合定时器、切换间隔、滚动时间、滚动图片...

    jQuery自定义滚动条完整实例

    本实例将深入讲解如何使用jQuery实现自定义滚动条的功能。首先,我们需要理解jQuery库的基本用法,这里我们使用的是jQuery 1.9.1版本。 1. **HTML结构**: HTML部分包含一个主容器`#div1`,内部有两个子元素:实际...

Global site tag (gtag.js) - Google Analytics