angular实现图片懒加载实例代码


Posted in Javascript onJune 08, 2017

这两天一直纠结angular的图片懒加载插件中无法自拔。在使用过程深深感到js学艺不精的痛苦,想修改源码又不会修改,只能尽力压榨如何使用插件上。这里主要谈谈在使用插件的过程遇到的一些问题。

 一)我使用的是angular-imglazyload这个插件。【https://www.npmjs.com/package/angular-imglazyload】主要是这个插件小不依赖jquery库,然后下载源码运行成功后,我就整合到自己项目上运行,结果发现竟然只有前2张加载了,滚动了都没有反映。下面是我的代码部分:

<div ng-repeat="Digest in Digest_cont track by $index"> 
     <img src="" data-ui-lazyload="{{Digest.val}}" onerror="this.src='img/default@2x_300X300.png'" ng-if="Digest.type=='img'" alt=""> 
     <div ng-if="Digest.type=='txt'">{{::Digest.val}}</div> 
    </div>

然后css上定义了loading图片,加载中会先看到的是在加载过程的图片

img[data-ui-lazyload]{ background:url(../img/icons/loading.gif) no-repeat center center;} 

一开始也不知道是什么情况,将循环图片的html代码一层一层往上放排查,经过反复查找发现是父父父级class设定的定位:position:absolute;导致了div脱离文档流导致的。而插件又是根据windows监听滚动事件的。这里的解决办法就是把定位改为relative就可以了。

然后是加载过程发现发现不知道为啥loading图片都没有出现。出现的一直是onerror定义的默认图片,一直以为是插件的问题,后来换了个插件使用。发现根源是在src=""这个属性导致的,渲染的过程认为查找不到图片就直接显示默认的图片了。这里只要删掉src属性即可解决。

然后又发现当我某几张图片定位到可是区域后,f5刷新浏览器,发现一直在加载中,图片无法显示出来,只有当我滚动下鼠标,图片才会加载出来。这个实在不清楚什么原因,我只能选择另外一个插件使用。

最终的解决方案是使用的这个插件【http://bennadel.github.io/JavaScript-Demos/demos/lazy-src-angularjs/】,发现上面的第三点问题在这里并不存在,果断使用这个插件,唯一不足是这个需要依赖于jquery库。这个插件依然是监听windows滚动事件,无法自定义监听滚动事件,因此需要注意的是以后的项目上需要懒加载的地方他的父辈元素一定不能是absolute定位。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
Dec 28 Javascript
分享20款好玩的jQuery游戏
Apr 17 Javascript
js获取事件源及触发该事件的对象
Oct 24 Javascript
JS复制内容到剪切板的实例代码(兼容IE与火狐)
Nov 19 Javascript
如何在JavaScript中实现私有属性的写类方式(二)
Dec 04 Javascript
详解jquery事件delegate()的使用方法
Jan 25 Javascript
使用jQuery给input标签设置默认值
Jun 20 Javascript
打字效果动画的4种实现方法(超简单)
Oct 18 Javascript
ReactNative之FlatList的具体使用方法
Nov 29 Javascript
vue滚动插件better-scroll使用详解
Oct 18 Javascript
vue自定义指令限制输入框输入值的步骤与完整代码
Aug 30 Javascript
vue实现列表拖拽排序的示例代码
Apr 08 Vue.js
微信小程序日历组件calendar详解及实例
Jun 08 #Javascript
php简单数据库操作类的封装
Jun 08 #Javascript
ReactJs设置css样式的方法
Jun 08 #Javascript
requirejs按需加载angularjs文件实例
Jun 08 #Javascript
简单谈谈关于 npm 5.0 的新坑
Jun 08 #Javascript
微信小程序开发之toast提示插件使用示例
Jun 08 #Javascript
jquery实现放大镜简洁代码(推荐)
Jun 08 #jQuery
You might like
十天学会php之第七天
2006/10/09 PHP
PHP_MySQL教程-第一天
2007/03/18 PHP
asp.net和php的区别点总结
2019/10/10 PHP
javascript html 静态页面传参数
2009/04/10 Javascript
修复IE9&amp;safari 的sort方法
2011/10/21 Javascript
JavaScript编程中window的location与history对象详解
2015/10/26 Javascript
JS实现的倒计时效果实例(2则实例)
2015/12/23 Javascript
javascript图片延迟加载实现方法及思路
2015/12/31 Javascript
JavaScript添加随滚动条滚动窗体的方法
2016/02/23 Javascript
js如何准确获取当前页面url网址信息
2020/09/13 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的三大方法
2017/01/22 Javascript
JavaScript编写一个贪吃蛇游戏
2017/03/09 Javascript
JavaScript实现省市县三级级联特效
2017/05/16 Javascript
JS正则表达式常见用法实例详解
2018/06/19 Javascript
vue实现双向绑定和依赖收集遇到的坑
2018/11/29 Javascript
node.js的http.createServer过程深入解析
2019/06/06 Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
2019/08/23 Javascript
Python的批量远程管理和部署工具Fabric用法实例
2015/01/23 Python
Python中在for循环中嵌套使用if和else语句的技巧
2016/06/20 Python
Jupyter notebook远程访问服务器的方法
2018/05/24 Python
Tensorflow实现多GPU并行方式
2020/02/03 Python
python中def是做什么的
2020/06/10 Python
小程序瀑布流解决左右两边高度差距过大的问题
2019/02/20 HTML / CSS
详解HTML5 Canvas标签及基本使用
2020/01/10 HTML / CSS
网络工程师个人的自我评价范文
2013/10/01 职场文书
产品工艺师的岗位职责
2013/11/15 职场文书
4s店总经理岗位职责
2013/12/31 职场文书
入党积极分子思想汇报范文
2014/01/05 职场文书
法学毕业生自我鉴定
2014/01/31 职场文书
党的群众路线教育实践活动宣传方案
2014/02/23 职场文书
cf收人广告词
2014/03/14 职场文书
终止劳动合同协议书
2014/10/05 职场文书
优秀班主任事迹材料
2014/12/16 职场文书
2015年小学英语教师工作总结
2015/05/12 职场文书
2015年青年志愿者工作总结
2015/05/20 职场文书
Pandas 稀疏数据结构的实现
2021/07/25 Python