之前在作項目的時候,把jquery.lazyload.js和iscroll.js一塊兒使用,當滑動頁面的時候,iscroll的滑動效果出來了,可是圖片懶加載的效果沒出來,主要是由於圖片緩衝完畢後不能及時刷新
解決二者兼容問題操做:javascript
一、(iscroll.js和lazyload.js的兼容(滑動時,緩衝好的圖片不更新)):html
onScrollMove: function(){ $("#"+id).trigger('scroll');//iscroller和loadlazy.js圖片緩衝完畢後不能及時刷新,加上這個模擬瀏覽器被滑動,那麼圖片就能夠刷新了 }
原理是:只要瀏覽器滾動,那麼圖片就會刷新,因此在scroll滾動時模擬瀏覽器滾動,這個問題就解決了。
另外個人這段代碼可謂神來之筆,你們好好看看java
二、node
//這一步很重要,不然圖片不能完成緩衝效果(原理:在src正在加載完後,就設置爲能夠緩衝。) $("#storeImgs ul li img").on("load",function(){ $("#storeImgs ul li img").lazyload({ effect: "fadeIn", //加載圖片使用的效果(淡入) threshold : 400 //在離可視區400px之內的圖片也開始加載了,提高體驗度 }); });
下面先給你們看個全的代碼,複製粘貼可直接看到所有效果。
若不能,請自行導入:
jquery-1.7.1.min.js,
jquery.lazyload.js,
iscroll.js三個庫。jquery
<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <script src="http://121.199.20.86/dw/res/js/jquery-1.7.1.min.js"></script> <script src="http://121.199.20.86/dw/res/weixin/js/jquery.lazyload.js"></script> <script src="http://121.199.20.86/dw/res/weixin/js/iscroll.js"></script> <title>title</title> </head> <body> <section id="wrapper"> <ul> <li> <img src="images/loading.gif" data-original="http://img.shu163.com/uploadfiles/wallpaper/2010/6/2010093006114284.jpg"> </li> <li> <img src="images/loading.gif" data-original="http://photo.8080.net/xiangce/17306/2007524205720/l_2007524205749.JPG"> </li> <li> <img src="images/loading.gif" data-original="http://photo.8080.net/xiangce/17306/2007524205720/l_20075242167.JPG"> </li> <li> <img src="images/loading.gif" data-original="http://imga.mumayi.com/android/wallpaper/2011/10/12/2011101205550352773473.jpg"> </li> <li> <img src="images/loading.gif" data-original="http://www.itoobz.com/uploads/allimg/1211/1-121125102551.jpg"> </li> <li> <img src="images/loading.gif" data-original="http://pic1.win4000.com/wallpaper/f/5101fb10c4543.jpg"> </li> <li> <img src="images/loading.gif" data-original="http://images-fast.digu.com/930d8830aef29ffe41bc9d2aa195d7d4_0009.jpg"> </li> <li> <img src="images/loading.gif" data-original="http://images.gamerlol.com/upload/2012/10/gl2012102511035273256579.jpg"> </li> <li> <img src="images/loading.gif" data-original="http://www.itoobz.com/uploads/allimg/1209/19-12091H23334.jpg"> </li> </ul> </section> </body> <style> ul{ width:100%; } li{ width:100%; margin-top:10px; } li img{width:100%;} </style> <script type="text/javascript"> window.onload = function(){ var scroll = scrollWithLocation("wrapper","10px","10px","0px","0px"); $("img").lazyload({ effect: "fadeIn", //加載圖片使用的效果(淡入) threshold : 400 //在離可視區400px之內的圖片也開始加載了,提高體驗度 }); } /* iscroll 一、取消select,input,textarea等默認不可點擊效果 二、解決iscroll。js和loadlazy.js衝突 */ function scroll(id){ var myScroll = new iScroll(id, { useTransform: false, onBeforeScrollStart: function (e) { var target = e.target; while (target.nodeType != 1) target = target.parentNode; //在iscroller裏常常會有select,input等屬性默認不可點擊,阻止默認操做就能夠點擊了 if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA' && target.tagName != 'A') e.preventDefault(); }, onScrollMove: function(){ $("#"+id).trigger('scroll');//iscroller和loadlazy.js圖片緩衝完畢後不能及時刷新,加上這個模擬瀏覽器被滑動,那麼圖片就能夠刷新了 }, onScrollEnd: function(){ } }); return myScroll; } /* 初始化scroll, 一、設置id="wrapper"部分enscroll ( 參數依次是:id 上 右 下 左 (wrapper默認是position:absolute,overflow:hidden) scroller放在onload()裏不容易出現界面混亂) 二、阻止瀏覽器默認滑動 */ function scrollWithLocation(id,top,right,bottom,left){ var wrapper = document.getElementById(id); wrapper.style.position = "absolute"; wrapper.style.top = top; wrapper.style.right = right; wrapper.style.bottom = bottom; wrapper.style.left = left; wrapper.style.overflow = "hidden"; document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);//阻止瀏覽器的默認滑動 return scroll(id); } </script> </html>