zoukankan      html  css  js  c++  java
  • js实现图片旋转

    1、以下代码适用ie9版本

    js代码如下:

    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: 
                        img.parentNode.style.height = img.height; 
                        break; 
                    case 1: 
                        img.parentNode.style.height = img.width; 
                        break; 
                    case 2: 
                        img.parentNode.style.height = img.height; 
                        break; 
                    case 3: 
                        img.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 canvasContext = c.getContext('2d'); 
                switch(n) { 
                    default : 
                    case 0 : 
                        c.setAttribute('width', img.width); 
                        c.setAttribute('height', img.height); 
                        canvasContext.rotate(0 * Math.PI / 180); 
                        canvasContext.drawImage(img, 0, 0); 
                        break; 
                    case 1 : 
                        c.setAttribute('width', img.height); 
                        c.setAttribute('height', img.width); 
                        canvasContext.rotate(90 * Math.PI / 180); 
                        canvasContext.drawImage(img, 0, -img.height); 
                        break; 
                    case 2 : 
                        c.setAttribute('width', img.width); 
                        c.setAttribute('height', img.height); 
                        canvasContext.rotate(180 * Math.PI / 180); 
                        canvasContext.drawImage(img, -img.width, -img.height); 
                        break; 
                    case 3 : 
                        c.setAttribute('width', img.height); 
                        c.setAttribute('height', img.width); 
                        canvasContext.rotate(270 * Math.PI / 180); 
                        canvasContext.drawImage(img, -img.width, 0); 
                        break; 
                } 
            } 
        } 

    html主要代码如下:

    <div id="imgDiv" style="float: left;">
         <img id="showImg" onclick="rotate('showImg','right')" style="100%; height:100%;" src="${ctx }/pwlp/supervise/supervise/getCaseImgTemplate.ht?id=${id }">
    </div>

    2、以下代码适用谷歌、ie10、ie11版本

    <!DOCTYPE html>
    <html>
    <head>
        <title>图片旋转</title>
        <script>
            window.onload = function(){ 
                var current = 0;
                document.getElementById('showImg').onclick = function(){
                    current = (current+90)%360;
                    this.style.transform = 'rotate('+current+'deg)';
                }
            };
        </script>
    </head>
    <body>
        <img id ="showImg" src="">
    </body>

    3、以下代码即适用ie9也适用谷歌、ie10、ie11版本(先判断浏览器版本再绑定点击事件)

    js代码如下:

      window.onload = function(){ 
            var current = 0;
            document.getElementById('showImg').onclick = function(){
                var browserVersion = myBrowser();
                if(browserVersion == "IE9"){
                    rotate("showImg","right");
                }else{
                    current = (current+90)%360;
                    this.style.transform = 'rotate('+current+'deg)';
                }
            }
        };
        
        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: 
                        img.parentNode.style.height = img.height; 
                        break; 
                    case 1: 
                        img.parentNode.style.height = img.width; 
                        break; 
                    case 2: 
                        img.parentNode.style.height = img.height; 
                        break; 
                    case 3: 
                        img.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 canvasContext = c.getContext('2d'); 
                switch(n) { 
                    default : 
                    case 0 : 
                        c.setAttribute('width', img.width); 
                        c.setAttribute('height', img.height); 
                        canvasContext.rotate(0 * Math.PI / 180); 
                        canvasContext.drawImage(img, 0, 0); 
                        break; 
                    case 1 : 
                        c.setAttribute('width', img.height); 
                        c.setAttribute('height', img.width); 
                        canvasContext.rotate(90 * Math.PI / 180); 
                        canvasContext.drawImage(img, 0, -img.height); 
                        break; 
                    case 2 : 
                        c.setAttribute('width', img.width); 
                        c.setAttribute('height', img.height); 
                        canvasContext.rotate(180 * Math.PI / 180); 
                        canvasContext.drawImage(img, -img.width, -img.height); 
                        break; 
                    case 3 : 
                        c.setAttribute('width', img.height); 
                        c.setAttribute('height', img.width); 
                        canvasContext.rotate(270 * Math.PI / 180); 
                        canvasContext.drawImage(img, -img.width, 0); 
                        break; 
                } 
            } 
        } 
        
        function myBrowser(){
            var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
            var isOpera = userAgent.indexOf("Opera") > -1;
            if (isOpera) {
                return "Opera"
            }; //判断是否Opera浏览器
            if (userAgent.indexOf("Firefox") > -1) {
                return "FF";
            } //判断是否Firefox浏览器
            if (userAgent.indexOf("Chrome") > -1){
              return "Chrome";
            }
            if (userAgent.indexOf("Safari") > -1) {
                return "Safari";
            } //判断是否Safari浏览器
            if (userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera) {
               if (userAgent.indexOf("MSIE 6.0") > -1) { return "IE6"; }
               if (userAgent.indexOf("MSIE 7.0") > -1) { return "IE7"; }
               if (userAgent.indexOf("MSIE 8.0") > -1) { return "IE8"; }
               if (userAgent.indexOf("MSIE 9.0") > -1) { return "IE9"; }
               if (userAgent.indexOf("MSIE 10.0") > -1) { return "IE10"; }
               return "IE";
            } //判断是否IE6-9浏览器
            if (userAgent.toLowerCase().indexOf("trident") > -1 && userAgent.indexOf("rv") > -1 && !isOpera) {
               if (userAgent.indexOf("rv:10.0") > -1) { return "IE10"; }
               if (userAgent.indexOf("rv:11.0") > -1) { return "IE11"; }
               return "IE11";
            } //判断是否IE10-11浏览器
            else
            {
               return userAgent;
            }
        }

    html代码如下:

    <div id="imgDiv" style="float: left;">
         <img id="showImg"  style="100%; height:100%;" src="${ctx }/pwlp/supervise/supervise/getCaseImgTemplate.ht?id=${id }">
    </div>
  • 相关阅读:
    asp.net过滤数据中有异常数据字符串
    微信内置浏览器的 User Agent的判断
    最近突然想了很久还是开博每天写点什么
    Sonar-scanner 插件配置应用
    存clob的值
    动态代理
    在oracle函数中不可直接将变量作为sql语句中的参数
    按照行、列进行统计(按两个维度进行统计)
    查询关联不上的数据,三张表查询
    前台页面——js/jq循环
  • 原文地址:https://www.cnblogs.com/henuyuxiang/p/10656415.html
Copyright © 2011-2022 走看看