做响应式网站设计师如何布局呢网站优化的方式
news/
2025/10/1 17:43:04/
文章来源:
做响应式网站设计师如何布局呢,网站优化的方式,色一把看片网 做最好的在线看片网站,搜索引擎优化实训1.前言 懒加载技术(简称lazyload)并不是新技术, 它是js程序员对网页性能优化的一种方案.lazyload的核心是按需加载.在大型网站中都有lazyload的身影,例如谷歌的图片搜索页,迅雷首页#xff0c;淘宝网,QQ空间等.因此掌握lazyload技术是个不错的选择,可惜jquery插件lazy loa…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.待加载资源相对于浏览器顶端位置. 在得到以上两点数据后通过如下函数便可得出某对象是否在浏览器可视区域了. //返回浏览器的可视区域位置 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 //比较某个子区域是否呈现在浏览器区域 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.innerHTML) }) } //子区域一 var d1 document.getElementById(d1); //子区域二 var d2 document.getElementById(d2); //需要按需加载区域集合 var arr [d1,d2]; window.onscroll function(){ //重新计算 autocheck(); } window.onresize function(){ //重新计算 autocheck(); } 现在我们只需要在弹窗的地方加载我们需要的资源了.源码就不贴出来了.如果需要的朋友,或着存在疑问的地方,可以联系我.
[原文http://www.cnblogs.com/a_bu/archive/2011/01/16/1936989.html]
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/924079.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!