前端【1】-图片滚动加载
2016-06-07 13:08
309 查看
前面为了赶时间,拷贝了一段滚动加载的效果(http://www.cnblogs.com/Darren_code/archive/2011/07/21/LoadImage.html),结果列表一长,导致页面其他脚本执行非常缓慢,造成很大的性能问题,最后忍无可忍,决定自己重新编码。思路是给列表上每20行编为一个区间,监听页面滚动事件,一旦下一个区间即将可见,加载下一个区间的图片,这样如果不是滚动很快的话,基本上看不到过渡图片的,运行下来,结果让人满意,除了往上滚动等问题没有考虑之外,基本上没有问题了。
var positions = [];//标记位置 var flags = [];//标记是否已经加载 function initialPositions() { for (var i = 20, len = @(Model.Data.Count); i <= len; i+=20) { var item = document.getElementById("item" + i); positions.push(item.getBoundingClientRect().top); flags.push(false); } //判断是否有余数 if(@(Model.Data.Count) % 20 >= 1){ flags.push(false);//增加一个区间 } } initialPositions(); window.addEventListener("scroll",function(){ var pos = document.body.scrollTop; //判断当前区间 for (var i = 0, len=positions.length; i < len; i++) { if(positions[i] >= pos){ break; } } loadSection(i); loadSection(i+1); }); function loadSection(current){ //判断当前区间是否已经加载 if(flags[current] == false){ for (var i = 1; i <= 20; i++) { var head = document.getElementById("head" + (20*current+i)); if(head){ var attrSrc = head.getAttribute("xsrc"); head.setAttribute("src", attrSrc); } } flags[current] = true; } } loadSection(0);
相关文章推荐
- Hammer.js
- javascript 输出 素数/质数
- 用HTML5的canvas实现抽奖刮刮卡的效果(只需十几行代码)
- jquery的ajax提交时loading提示的处理方法
- Jquery--------全选(选中后可删除)
- JavaScript:JSONP
- 前端初学,记下标签以后参考2
- CSS3 Transform
- JavaScript:图像ping
- CSS3 Transition
- JavaScript:CORS(跨源资源共享)
- CSS布局模型
- ckeditor jsp使用实现form上传
- mobiscroll的具体用法
- Jquery.Datatables 服务器处理(Server-side processing)
- iScroll.js实现缩放、下拉刷新、滑动切换等移动应用场景
- JavaScript:Ajax详解
- 【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)
- .net MVC 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错,字符串的长度超过了为 maxJsonLength 属性设置的值
- JQuery鼠标移动到div上,显示提示