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

      <script type="text/javascript" language="javascript">
        function rotate(id, angle, whence) {
          var p = document.getElementById(id);
          if (!whence) {
            p.angle = ((p.angle == undefined ? 0 : p.angle) + angle) % 360;
          }
          else {
            p.angle = angle;
          }
          if (p.angle >= 0) {
            var rotation = Math.PI * p.angle / 180;
          }
          else {
            var rotation = Math.PI * (360 + p.angle) / 180;
          }
          var costheta = Math.cos(rotation);
          var sintheta = Math.sin(rotation);
          if (document.all && !window.opera) {
            var canvas = document.createElement('img');
            canvas.src = p.src;
            canvas.height = p.height;
            canvas.width = p.width;
            canvas.style.filter = "progid:DXImageTransform.Microsoft.Matrix(M11=" + costheta + ",M12=" + (-sintheta) + ",M21=" + sintheta + ",M22=" + costheta + ",SizingMethod='auto expand')";
          }
          else {
            var canvas = document.createElement('canvas');
            if (!p.oImage) {
              canvas.oImage = new Image();
              canvas.oImage.src = p.src;
            }
            else {
              canvas.oImage = p.oImage;
            }
            //alert(canvas.width)
            canvas.style.width = canvas.width = Math.abs(costheta * canvas.oImage.width) + Math.abs(sintheta * canvas.oImage.height);
            canvas.style.height = canvas.height = Math.abs(costheta * canvas.oImage.height) + Math.abs(sintheta * canvas.oImage.width);
            var context = canvas.getContext('2d');
            context.save();
            if (rotation <= Math.PI / 2) {
              context.translate(sintheta * canvas.oImage.height, 0);
            }
            else if (rotation <= Math.PI) {
              context.translate(canvas.width, -costheta * canvas.oImage.height);
            }
            else if (rotation <= 1.5 * Math.PI) {
              context.translate(-costheta * canvas.oImage.width, canvas.height);
            }
            else {
              context.translate(0, -sintheta * canvas.oImage.width);
            }
            context.rotate(rotation);
            context.drawImage(canvas.oImage, 0, 0, canvas.oImage.width, canvas.oImage.height);
            context.restore();
          }
          canvas.id = p.id;
          canvas.angle = p.angle;
          p.parentNode.replaceChild(canvas, p);
        }
    
        //向右旋转
        function rotateRight(id, angle) {
          rotate(id, angle == undefined ? 90 : angle);
        }
        //向左旋转
        function rotateLeft(id, angle) {
          rotate(id, angle == undefined ? -90 : -angle);
        }
      </script>

    调用方法:

    <div class="content">
      <div class="data">
        <a href="javascript:void(0)" style="font-weight: bold; text-decoration: none; font-size: 16px;"
          onclick="rotateRight('theimage',90);">右转</a> 
    <a href="javascript:void(0)" style="font-weight: bold; font-size: 16px; text-decoration: none;"
    onclick
    ="rotateLeft('theimage',90);">左转</a><br>
    <img src="a.jpg" id="theimage" onload="resizeimg(this,this.width,this.height)" width="100%" alt="800×1422" style="cursor: pointer;" /> </a> <div style="clear: both"> </div> </div> </div>
  • 相关阅读:
    使用echarts插件做图表常见的几个问题(五)——图形的两种渲染方式
    数组对象如何根据对象中某个字段分组
    JS监听浏览器后退事件
    使用echarts插件做图表常见的几个问题(四)—— 柱状图中以虚线展示重合的柱子
    使用echarts插件做图表常见的几个问题(三)—— 图表标线的使用
    使用echarts插件做图表常见的几个问题(二)—— 实现多Y轴
    使用echarts插件做图表常见的几个问题(一)—— 折线图局部虚线
    如何判断touch事件滑动的方向?
    解决session共享方案
    设计模式总结
  • 原文地址:https://www.cnblogs.com/ustcyc/p/3760116.html
Copyright © 2011-2022 走看看