图片预加载
图片预加载功能
图片预加载技术简介---这是迅雷官网的源代码的一句,在img里面有一个src属性,这里放的是代替的图片,大小为1px*1px,其实就相当于是没有这个图片,另外的一个_src才是真实的图片地址(自定义属性)。当鼠标向下滚动时,加载真实的图片,利用Js里的onscroll事件判断。
1 <img alt="花开半夏" src="http://images.movie.xunlei.com/img_default.gif" _src="http://img2.kankan.kanimg.com/gallery2/block/2013/12/03/f2163d024767a0a8bf39bb2dbb56e37b.jpg">
图片预加载策略:预判加载(预判前一张/后一张图片)、延迟加载(先加载HTML,然后再加载页面图片)
onload和onerror判断图片加载情况:
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>图片预加载</title> 6 <script> 7 window.onload=function () 8 { 9 var oImg=new Image(); 10 11 oImg.onload=function () 12 { 13 alert('图片预加载完成'); 14 }; 15 oImg.onerror=function () 16 { 17 alert('失败'); 18 }; 19 oImg.src='http://pic25.nipic.com/20121126/668573_145010549116_2.jpg'; 20 }; 21 </script> 22 </head> 23 24 <body> 25 <img width="400" height="300" src="http://www.duose.com/p/2007/0405/46516_046875.jpg" onmouseover="this.src='http://pic25.nipic.com/20121126/668573_145010549116_2.jpg';" onmouseout="this.src='http://www.duose.com/p/2007/0405/46516_046875.jpg';" /> 26 </body> 27 </html>
Mac电脑菜单效果
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <style> 5 body {margin:0;} 6 #div1 {width:100%; position:absolute; bottom:0; text-align:center;} 7 </style> 8 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 9 <title>无标题文档</title> 10 <script> 11 document.onmousemove=function (ev) 12 { 13 var oEvent=ev||event;//事件对象 14 var oDiv=document.getElementById('div1'); 15 var aImg=document.getElementsByTagName('img'); 16 var aTxt=document.getElementsByTagName('input'); 17 var i=0; 18 19 for(i=0;i<aImg.length;i++)//循环所有的元素 20 { 21 var x=aImg[i].offsetLeft+aImg[i].offsetWidth/2; 22 //offsetLeft正确,计算图片中心点的距离,所以加上本身的一半-------图片中心点距离可视区边缘的距离 23 var y=aImg[i].offsetTop+oDiv.offsetTop+aImg[i].offsetHeight/2; 24 //offsetTop计算该元素距离父级元素的距离,所以要加上父级元素的offsetTop 25 var a=x-oEvent.clientX; 26 var b=y-oEvent.clientY; 27 28 var dis=Math.sqrt(a*a+b*b);//开平方,或者使用pow(a,2)+pow(b,2)进行开平方 29 var scale=1-dis/300;//本来是dis/100;但是使用1-dis/100的话,比例更加有效 30 if(scale<0.5)//如果,比例小于50%;强行的让比例等于50% 31 { 32 scale=0.5; 33 } 34 aImg[i].width=scale*128;//scale最大可能是1 35 aTxt[i].value=scale.toFixed(2);//toFixed()函数保留两位小数 36 } 37 }; 38 </script> 39 </head> 40 41 <body> 42 <input type="text" /> 43 <input type="text" /> 44 <input type="text" /> 45 <input type="text" /> 46 <input type="text" /> 47 <div id="div1"> 48 <img src="images/1.png" width="64" /> 49 <img src="images/2.png" width="64" /> 50 <img src="images/3.png" width="64" /> 51 <img src="images/4.png" width="64" /> 52 <img src="images/5.png" width="64" /> 53 </div> 54 </body> 55 </html>
念念不忘,必有回响。