javascript ÀÁ¼ÓÔؼ¼Êõ(lazyload)¼òµ¥ÊµÏÖ
1.Ç°ÑÔ
¡¡¡¡ÀÁ¼ÓÔØ
¼¼Êõ(¼ò³Ælazyload)²¢²»ÊÇм¼Êõ,
ËüÊÇjs³ÌÐòÔ±¶ÔÍøÒ³ÐÔÄÜÓÅ»¯µÄÒ»ÖÖ·½°¸.lazyloadµÄºËÐÄÊÇ°´Ðè¼ÓÔØ.ÔÚ´óÐÍÍøÕ¾Öж¼ÓÐlazyloadµÄÉíÓ°,ÀýÈç¹È¸èµÄͼƬËÑË÷Ò³,ѸÀ×Ê×
Ò³£¬ÌÔ±¦Íø,QQ¿Õ¼äµÈ.Òò´ËÕÆÎÕlazyload¼¼ÊõÊǸö²»´íµÄÑ¡Ôñ,¿Éϧjquery²å¼þlazy load¹ÙÍø(http://www.appelsiini.net/projects/lazyload)³Æ²»Ö§³Öаæä¯ÀÀÆ÷¡£
2.lazyloadÔÚʲô³¡ºÏÖÐÓ¦ÓñȽϺÏÊÊ?
¡¡¡¡Éæ¼°µ½Í¼Æ¬£¬falsh×ÊÔ´ , iframe, ÍøÒ³±à¼Æ÷(ÀàËÆFCK)µÈÕ¼Óýϴó´ø¿í£¬ÇÒÕâЩģ¿éÔÝÇÒ²»ÔÚä¯ÀÀÆ÷¿ÉÊÓÇøÄÚ,Òò´Ë¿ÉÒÔʹÓÃlazyloadÔÚÊʵ±µÄʱºò¼ÓÔظÃÀà×ÊÔ´.±ÜÃâÍøÒ³´ò¿ªÊ±¼ÓÔعý¶à×ÊÔ´£¬ÈÃÓû§µÈ´ýÌ«¾Ã.
3.ÈçºÎʵÏÖlazyload?
¡¡¡¡lazyloadµÄÄѵãÔÚÈçºÎÔÚÊʵ±µÄʱºò¼ÓÔØÓû§ÐèÒªµÄ×ÊÔ´(ÕâÀïÓû§ÐèÒªµÄ×ÊÔ´Ö¸¸Ã×ÊÔ´³ÊÏÖÔÚä¯ÀÀÆ÷¿ÉÊÓÇøÓò)¡£Òò´ËÎÒÃÇÐèÒªÖªµÀ¼¸µãÐÅÏ¢À´È·¶¨Ä¿±êÊÇ·ñÒѳÊÏÖÔÚ¿Í»§Çø,ÆäÖаüÀ¨£º
¡¡¡¡¡¡¡¡1.¿ÉÊÓÇøÓòÏà¶ÔÓÚä¯ÀÀÆ÷¶¥¶ËλÖÃ
¡¡¡¡¡¡¡¡2.´ý¼ÓÔØ×ÊÔ´Ïà¶ÔÓÚä¯ÀÀÆ÷¶¥¶ËλÖÃ.
¡¡¡¡Ôڵõ½ÒÔÉÏÁ½µãÊý¾Ýºó£¬Í¨¹ýÈçϺ¯Êý£¬±ã¿ÉµÃ³öij¶ÔÏóÊÇ·ñÔÚä¯ÀÀÆ÷¿ÉÊÓÇøÓòÁË.
//·µ»Øä¯ÀÀÆ÷µÄ¿ÉÊÓÇøÓòλÖà ¡¡¡¡ function getClient(){ ¡¡¡¡¡¡¡¡ var l,t,w,h; ¡¡¡¡¡¡¡¡ l = document.documentElement.scrollLeft || document.body.scrollLeft; ¡¡¡¡¡¡¡¡ t = document.documentElement.scrollTop || document.body.scrollTop; ¡¡¡¡¡¡¡¡ w = document.documentElement.clientWidth; ¡¡¡¡¡¡¡¡ h = document.documentElement.clientHeight; ¡¡¡¡¡¡¡¡ return {'left':l,'top':t,'width':w,'height':h} ; ¡¡¡¡ } ¡¡¡¡//·µ»Ø´ý¼ÓÔØ×ÊԴλÖà ¡¡¡¡ function getSubClient(p){ ¡¡¡¡¡¡¡¡ var l = 0,t = 0,w,h; ¡¡¡¡¡¡¡¡ w = p.offsetWidth ; ¡¡¡¡¡¡¡¡ h = p.offsetHeight; ¡¡¡¡¡¡¡¡while(p.offsetParent){ ¡¡¡¡¡¡¡¡l += p.offsetLeft ; ¡¡¡¡¡¡¡¡ t += p.offsetTop ; ¡¡¡¡¡¡¡¡ p = p.offsetParent; ¡¡¡¡} ¡¡¡¡return {'left':l,'top':t,'width':w,'height':h } ; }¡¡¡¡ÆäÖÐ º¯Êý getClient()·µ»Øä¯ÀÀÆ÷¿Í»§ÇøÇøÓòÐÅÏ¢,getSubClient()·µ»ØÄ¿±êÄ£¿éÇøÓòÐÅÏ¢¡£´Ëʱȷ¶¨Ä¿±êÄ£¿éÊÇ·ñ³öÏÖÔÚ¿Í»§Çøʵ¼ÊÉÏÊÇÈ·¶¨ÈçÉÏÁ½¸ö¾ØÐÎÊÇ·ñÏཻ.
¡¡¡¡//ÅжÏÁ½¸ö¾ØÐÎÊÇ·ñÏཻ,·µ»ØÒ»¸ö²¼¶ûÖµ ¡¡¡¡ function intens(rec1,rec2){ ¡¡¡¡¡¡¡¡ var lc1,lc2,tc1,tc2,w1,h1; ¡¡¡¡¡¡¡¡ lc1 = rec1.left + rec1.width / 2; ¡¡¡¡¡¡¡¡ lc2 = rec2.left + rec2.width / 2; ¡¡¡¡¡¡¡¡tc1 = rec1.top + rec1.height / 2 ; ¡¡¡¡¡¡¡¡ tc2 = rec2.top + rec2.height / 2 ; ¡¡¡¡¡¡¡¡ w1 = (rec1.width + rec2.width) / 2 ; ¡¡¡¡¡¡¡¡ h1 = (rec1.height + rec2.height) / 2; ¡¡¡¡¡¡¡¡ return Math.abs(lc1 - lc2) < w1 && Math.abs(tc1 - tc2) < h1 ; ¡¡¡¡ } ¡¡¡¡ÏÖÔÚ»ù±¾ÉÏ¿ÉÒÔʵÏÖÑÓʱ¼ÓÔØÁË£¬½ÓÏÂÀ´,ÎÒÃÇÔÚ window.onscroll ʼþÖбàдһЩ´úÂë¼à¿ØÄ¿±êÇøÓòÊÇ·ñ³ÊÏÖÔÚ¿Í»§Çø. ¡¡¡¡<div style = "width:100px; height:3000px"></div> ¡¡¡¡<div id = "d1" style = "width:50px; height:50px; background:red;position:absolute; top:1000px"> ¡¡¡¡</div> ¡¡¡¡ var d1 = document.getElementById("d1"); ¡¡¡¡ window.onscroll = function(){ ¡¡¡¡ ¡¡¡¡var prec1 = getClient(); ¡¡¡¡¡¡¡¡var prec2 = getSubClient(d1); ¡¡¡¡¡¡¡¡¡¡if(intens(prec1,prec2)){ ¡¡¡¡ ¡¡¡¡¡¡¡¡alert("true") ¡¡¡¡ ¡¡ ¡¡¡¡} ¡¡¡¡}¡¡¡¡ÎÒÃÇÖ»ÐèÒªÔÚµ¯³ö´°¿ÚµÄµØ·½¼ÓÔØÎÒÃÇÐèÒªµÄ×ÊÔ´.
¡¡¡¡ÕâÀïÖµµÃ×¢ÒâµÄÊÇ:Ä¿±ê¶ÔÏó³ÊÏÖÔÚ¿Í»§ÇøÓòʱ£¬»áËæ׏ö¶¯¶ø²»¶ÏµÄµ¯³ö´°¿Ú.Òò´ËÎÒÃÇÐèÒªÔÚµ¯³öµÚÒ»¸ö´°¿ÚºóÈ¡Ïû¶Ô¸ÃÇøÓòµÄ¼à²â,ÕâÀïÓÃÒ»¸öÊý×éÀ´ÊÕ¼¯ÐèÒª¼à²âµÄ¶ÔÏó¡£»¹ÐèҪעÒâ: ÒòΪonscrollʼþºÍonresizeʼþ¶¼»á¸Ä±äÓÎÀÀÆ÷¿ÉÊÓÇøÓòÐÅÏ¢,Òò´ËÔÚ¸ÃÀàʼþ´¥·¢ºóÐèÒªÖØмÆËãÄ¿±ê¶ÔÏóÊÇ·ñÔÚ¿ÉÊÓÇøÓò,ÕâÀïÓà autocheck()º¯ÊýʵÏÖ.(ѸÀ×Ê×Ò³µÄlazyloadûÓÐÔÚonresizeʼþÖÐÖØмÆËãÄ¿±ê¶ÔÏóÊÇ·ñÔÚä¯ÀÀÆ÷¿ÉÊÓÇøÓò,Òò´ËÈç¹ûÏȽ«ä¯ÀÀÆ÷ ´°¿ÚËõСµ½Ò»¶¨³ß´çºó¹ö¶¯µ½ÐèÒª¼ÓÔØͼƬµÄÇøÓòºóµã»÷×î´ó»¯£¬Í¼Æ¬¼ÓÔز»³öÀ´£¬ºÇºÇ£¬ÒÔºóÐèҪעÒâÁË).
Ôö¼ÓÔªËØ:<div id = "d2" style = "width:50px; height:50px; background:blue;position:absolute; top:2500px"> ¡¡¡¡ //±È½Ïij¸ö×ÓÇøÓòÊÇ·ñ³ÊÏÖÔÚä¯ÀÀÆ÷ÇøÓò ¡¡¡¡function jiance(arr,prec1,callback){ ¡¡¡¡¡¡var prec2; ¡¡¡¡¡¡for(var i = arr.length - 1 ; i >= 0 ;i--){ ¡¡¡¡¡¡¡¡ if(arr[i]){ ¡¡¡¡¡¡¡¡ prec2 = getSubClient(arr[i]); ¡¡¡¡¡¡¡¡ if(intens(prec1,prec2)){ ¡¡¡¡¡¡¡¡¡¡¡¡callback(arr[i]); ¡¡¡¡¡¡¡¡¡¡¡¡ //¼ÓÔØ×ÊÔ´ºó£¬É¾³ý¼à²â ¡¡¡¡¡¡¡¡ ¡¡¡¡ delete arr[i]; ¡¡¡¡¡¡¡¡¡¡¡¡} ¡¡¡¡¡¡¡¡} ¡¡¡¡¡¡} ¡¡¡¡} ¡¡¡¡//¼ì²âÄ¿±ê¶ÔÏóÊÇ·ñ³öÏÖÔÚ¿Í»§Çø ¡¡¡¡function autocheck(){ ¡¡¡¡¡¡¡¡ var prec1 = getClient(); ¡¡¡¡¡¡¡¡jiance(arr,prec1,function(obj){ ¡¡¡¡¡¡¡¡¡¡¡¡//¼ÓÔØ×ÊÔ´... ¡¡¡¡¡¡¡¡ alert(obj[removed]) ¡¡¡¡¡¡¡¡}) ¡¡¡¡} ¡¡¡¡//×ÓÇøÓòÒ» ¡¡¡¡ var d1 = document.getElementById("d1"); ¡¡¡¡ //×ÓÇøÓò¶þ ¡¡¡¡var d2 = document.getElementById("d2"); ¡¡¡¡ //ÐèÒª°´Ðè¼ÓÔØÇøÓò¼¯ºÏ ¡¡¡¡var arr = [d1,d2]; ¡¡¡¡ window.onscroll = function(){ ¡¡¡¡¡¡¡¡ //ÖØмÆËã ¡¡¡¡¡¡¡¡ autocheck(); ¡¡¡¡} ¡¡¡¡window.onresize = function(){ ¡¡¡¡¡¡¡¡ //ÖØмÆËã ¡¡¡¡¡¡¡¡ autocheck(); ¡¡¡¡}¡¡¡¡ÏÖÔÚÎÒÃÇÖ»ÐèÒªÔÚµ¯´°µÄµØ·½¼ÓÔØÎÒÃÇÐèÒªµÄ×ÊÔ´ÁË.Ô´Âë¾Í²»Ìù³öÀ´ÁË.
ÍƼöÐÅÏ¢
- jqueryʵÏÖÍøվͼƬÀÁ¼ÓÔØ´úÂë
- jQuery Tooltips²å¼þ
- jQueryµÄ.bind()¡¢.live()ºÍ.delegate(....
- [Ô´´]·ÂGoogle Reader¡¢ÐÂÀË΢²©¡¢ÌÚѶ΢²©µ....
- Ä㲻ϲ»¶»ðºü£¬µ«ÓÖϲ»¶firebug£¬ÄǾ͸úÎÒÒ»ÆðÀ´ÔÚIEÉÏ....
- ¸ù¾ÝÏÔʾÆ÷·Ö±æÂʵ÷ÕûÒ³ÃæÏÔʾµÄJavascript½Å±¾
- jQuery дµÄ·ÂÐÂÀË΢²© ÏòϹö¶¯Ð§¹û¡¾×ªÔØ¡¿
- ͨÓõÄJqueryÑ¡ÔñÆ÷
- jQuery ½áºÏ Json Ìá½»Êý¾Ýµ½Webservice£¬....
- ×ÔÖÆjQueryÖÇÄÜÌáʾ²å¼þһö
ÈÈÃÅÐÅÏ¢
- nohup: redirecting stderr to stdou....
- ʹÓÃlog_formatΪNginx·þÎñÆ÷ÉèÖøüÏêϸµÄÈÕÖ¾¸ñʽ
- jquery easyUI--dataGrid-Json
- [Ô´´]·ÂGoogle Reader¡¢ÐÂÀË΢²©¡¢ÌÚѶ΢²©µ....
- ÀûÓÃKeepalived+mysql¹¹½¨¸ß¿ÉÓÃMySQLË«Ö÷×Ô¶....
- Nginx+keepalivedʵÏÖ¸ºÔؾùºâºÍË«»úÈȱ¸¸ß¿ÉÓÃ
- jqueryʵÏÖÒ³Ãæ¼ÓÔؽø¶ÈÌõ
- Rolling cURL: PHP²¢·¢×î¼Ñʵ¼ù
- codeigniter ·ÓÉÖÕ¼«ÓÅ»¯(url rewrite)
- linuxÏÂÉèÖÃsshÎÞÃÜÂëµÇ¼
×î½ü¸üÐÂ
- js»ñÈ¡srcÖд«µÝµÄ²ÎÊý
- jqueryʵÏÖÍøվͼƬÀÁ¼ÓÔØ´úÂë
- ÈÃä¯ÀÀÆ÷ÆÁ±ÎµôJavaScriptµÄ³ö´íÌáʾ
- github²»ÄܼÓÔØcss¡¢js½â¾ö°ì·¨
- ÎÒÖªµÀµÄJavaScript -- Éè¼Æģʽ(ÇŽÓ)Ó¦ÓÃÖ® ¨C ....
- 15¸öÖµµÃ¿ª·¢ÈËÔ±¹Ø×¢µÄjQuery¿ª·¢¼¼ÇɺÍÐĵÃ
- dz̸JavascriptÃæÏò¶ÔÏó±à³Ì
- JS¼òµ¥¶¯»·â×°
- JavaScript³õѧÕßӦעÒâµÄÆ߸öϸ½Ú
- jQuery Tooltips²å¼þ
ÆÀÂÛ