《js实现图片缓慢缩放的效果》之学习总结

来源:互联网 发布:淘宝文案兼职一篇多少 编辑:程序博客网 时间:2024/05/17 08:21


js

学习资源来自慕课网:http://www.imooc.com/learn/80

题述:点击放大,即将图片放大,点击缩小,及缩小图片。此例常应用在如淘宝、京东网站上的图片缩放。

小结:

实现缩放图片的关键点:

1)图片需要用<img>来引用( 通过我本人自己的测试,发现图片的宽高不能通过css或内联style来另外设置,不然缩放不起作用。)

2)实现缩放效果采用setInterVal()缓慢缩放

3)宽高要同比例缩放

      例如:以同比例5%的速度增大

                img.width = img.width*1.05;

                img.height = img.height*1.05;

4)图片缩放的限制:

 **每次点击时规定缩放的比例

  **图片总体缩放到一定程度后,限制不能缩放

5)注意释放定时器clearInterval();


代码练习如下:

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. <!DOCTYPE html>  
  2. <html>  
  3.     <head>  
  4.         <meta charset="utf-8">  
  5.         <style>  
  6.         .box{  
  7.             width:300px;  
  8.             margin:0 auto;  
  9.             height:auto;  
  10.         }  
  11.         </style>  
  12.         <script type="text/javascript">  
  13.         /***  
  14.             实现缩放图片的关键点:  
  15.             1)图片需要用<img>来引用  
  16.                通过我本人自己的测试,发现图片的宽高不能通过css或内联style来另外设置,不然缩放不起作用。  
  17.             2)实现缩放效果采用setInterVal()缓慢缩放  
  18.             3)宽高要同比例缩放  
  19.                例如:以同比例5%的速度增大  
  20.                      img.width = img.width*1.05;  
  21.                      img.height = img.height*1.05;  
  22.             4)图片缩放的限制:  
  23.                **每次点击时规定缩放的比例  
  24.                **图片总体缩放到一定程度后,限制不能缩放  
  25.             5)注意释放定时器clearInterval();  
  26.         ***/  
  27.             window.onload = function(){  
  28.                 var big = document.getElementById("big");  
  29.                 var small = document.getElementById("small");  
  30.                 big.onclick = function(){  
  31.                     makeBig();  
  32.                 };  
  33.                 small.onclick = function(){  
  34.                     makeSmall();  
  35.                 };  
  36.   
  37.                 var img = document.getElementById("imgdemo");  
  38.   
  39.                 //图片最大限度增加到原来的3倍  
  40.                 var maxW = img.width*3;    
  41.                 var maxH = img.height*3;  
  42.   
  43.                 //图片最大限度缩小到原来的0.5倍  
  44.                 var minW = img.width*0.5;  
  45.                 var minH = img.height*0.5;  
  46.   
  47.   
  48.                 //图片放大  
  49.                 function makeBig(){  
  50.   
  51.                     //每次点击后的宽高限于同比例增加50%;  
  52.                     var clickW = img.width*1.5;  
  53.                     var clickH = img.height*1.5;  
  54.   
  55.                     var timer = setInterval(function(){  
  56.   
  57.                         if(img.width < clickW){//限定宽高增大的程度到每次点击后的宽高的150%  
  58.   
  59.                             if(img.width < maxW){//限定物体能缩放的极限值为maxW  
  60.   
  61.                                 //以同比例5%的速度增大  
  62.                                 img.width = img.width*1.05;  
  63.                                 img.height = img.height*1.05;  
  64.                             }else{  
  65.                                 alert("亲,图片已放到最大了");  
  66.                                 clearInterval(timer);  
  67.                             }  
  68.                         }else{  
  69.                             clearInterval(timer);  
  70.                         }  
  71.                           
  72.                     },10);  
  73.                 }  
  74.   
  75.                 //缩小图片  
  76.                 function makeSmall(){  
  77.                     //每次点击后的宽高限于同比例增加50%;  
  78.                     var clickW = img.width*0.5;  
  79.                     var clickH = img.height*0.5;  
  80.   
  81.                     var timer = setInterval(function(){  
  82.   
  83.                         if(img.width > clickW){//限定宽高缩放的程度到每次点击后的宽高的50%  
  84.   
  85.                             if(img.width > minW){//限定物体能缩放的极限值为minW  
  86.   
  87.                                 //以同比例5%的速度减小  
  88.                                 img.width = img.width*0.95;  
  89.                                 img.height = img.height*0.95;  
  90.                             }else{  
  91.                                 alert("亲,图片已缩到最小了");  
  92.                                 clearInterval(timer);  
  93.                             }  
  94.                         }else{  
  95.                             clearInterval(timer);  
  96.                         }  
  97.                           
  98.                     },10);  
  99.                 }  
  100.             }  
  101.         </script>  
  102.     </head>  
  103.     <body>  
  104.         <div class="box">  
  105.             <img src="default.jpeg" id="imgdemo"></img>  
  106.             <p>  
  107.                 <input type="button" id="big" value="放大" />  
  108.                 <input type="button" id="small" value="缩小" />  
  109.             </p>  
  110.         </div>  
  111.     </body>  
  112. </html>  

效果图:
0 0
原创粉丝点击