您好,欢迎访问一九零五行业门户网

让图片旋转任意角度及JQuery插件使用介绍

引入下方的jquery.rotate.js文件,然后通过$(选择器).rotate(角度);可以旋转任意角度,
例如$(#rotate-image).rotate(45);把这句放在$(document).ready(function(){ });中
就是将id为rotate-image的图片旋转45度。
不过,貌似在chrome中总是不显示。
唉,找了两个小时,才发现chrome太坑爹了,没法获取图片的长宽。
解决办法是,把$(#rotate-image).rotate(45);放在
$(window).load(function(){ });中,因为在chrome中图片在执行$(document).ready(function(){ });中的语句时并没有加载完图片,坑爹啊。
另外可以更方便的通过调用$(选择器).rotateright()和$(选择器).rotateleft()来分别向右旋转90度和向左旋转90度。
jquery.rotate.js:
jquery.fn.rotate = function(angle,whence) { var p = this.get(0); // we store the angle inside the image tag for persistence 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.round(math.cos(rotation) * 1000) / 1000; var sintheta = math.round(math.sin(rotation) * 1000) / 1000; //alert(costheta+","+sintheta); 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; } 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); } jquery.fn.rotateright = function(angle) { this.rotate(angle==undefined?90:angle); } jquery.fn.rotateleft = function(angle) { this.rotate(angle==undefined?-90:-angle); }
更多让图片旋转任意角度及jquery插件使用介绍。
其它类似信息

推荐信息