js 旋转图片

来源:互联网 发布:linux查看python版本 编辑:程序博客网 时间:2024/04/28 03:37
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>图片旋转效果</title> <meta http-equiv="content-type" content="text/html;charset=gb2312"> <!--把下面代码加到<head>与</head>之间--> <style type="text/css"> ul{padding:0 15px;} ul li{padding-bottom:15px;border-bottom:1px dashed #EEE;} .caption{padding:15px 0 5px;} .caption input{margin-right:10px;padding:0 10px;} </style> <script type="text/javascript"> /* * www.byzuo.com * ok!: MSIE 6, 7, 8, Firefox 3.6, chrome 4, Safari 4, Opera 10 * o 旋转图片ID; * p 选择旋转方向,固定值为'left'或'right'; */ function rotate(o,p){     var img = document.getElementById(o);     if(!img || !p) return false;     var n = img.getAttribute('step');     if(n== null) n=0;     if(p=='right'){         (n==3)? n=0:n++;     }else if(p=='left'){         (n==0)? n=3:n--;     }     img.setAttribute('step',n);     //MSIE     if(document.all) {         img.style.filter = 'progid:DXImageTransform.Microsoft.BasicImage(rotation='+ n +')';         //HACK FOR MSIE 8         switch(n){             case 0:                 imgimg.parentNode.style.height = img.height;                 break;             case 1:                 imgimg.parentNode.style.height = img.width;                 break;             case 2:                 imgimg.parentNode.style.height = img.height;                 break;             case 3:                 imgimg.parentNode.style.height = img.width;                 break;         }     //DOM     }else{         var c = document.getElementById('canvas_'+o);         if(c== null){             img.style.visibility = 'hidden';             img.style.position = 'absolute';             c = document.createElement('canvas');             c.setAttribute("id",'canvas_'+o);             img.parentNode.appendChild(c);         }         var ccanvasContext = c.getContext('2d');         switch(n) {             default :             case 0 :                 c.setAttribute('width', img.width);                 c.setAttribute('height', img.height);                 ccanvasContext.rotate(0 * Math.PI / 180);                 ccanvasContext.drawImage(img, 0, 0);                 break;             case 1 :                 c.setAttribute('width', img.height);                 c.setAttribute('height', img.width);                 ccanvasContext.rotate(90 * Math.PI / 180);                 ccanvasContext.drawImage(img, 0, -img.height);                 break;             case 2 :                 c.setAttribute('width', img.width);                 c.setAttribute('height', img.height);                 ccanvasContext.rotate(180 * Math.PI / 180);                 ccanvasContext.drawImage(img, -img.width, -img.height);                 break;             case 3 :                 c.setAttribute('width', img.height);                 c.setAttribute('height', img.width);                 ccanvasContext.rotate(270 * Math.PI / 180);                 ccanvasContext.drawImage(img, -img.width, 0);                 break;         }     } } </script> </head> <body> <!--把下面代码加到<body>与</body>之间--> <ul class="clearfix">     <li>         <div class="caption">             <input type="button" value="turn left" onclick="rotate('rotatePic','left')">             <input type="button" value="turn right" onclick="rotate('rotatePic','right')">         </div>         <div class="cont">             <img  alt="javascript 图片旋转效果"  id="rotatePic" src="rotatePic.jpg" alt="">         </div>     </li> </ul> </body> </html> 


 

以上代码在IE,firefox测试通过,只是图片的大小必需保证是原始大小,如果不是原始大小, 在firefox中需要通过比例缩放来控制
原创粉丝点击