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


Posted in Javascript onMarch 20, 2013

引入下方的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); 
}
Javascript 相关文章推荐
Tinymce+jQuery.Validation使用产生的BUG
Mar 29 Javascript
解决IE下select标签innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)
May 13 Javascript
jquery入门必备的基本认识及实例(整理)
Jun 24 Javascript
js编码、解码函数介绍及其使用示例
Sep 05 Javascript
JavaScript中number转换成string介绍
Dec 31 Javascript
javascript中的3种继承实现方法
Jan 27 Javascript
js原生之焦点图转换加定时器实例
Dec 12 Javascript
Vue官方文档梳理之全局配置
Nov 22 Javascript
Angular6 Filter实现页面搜索的示例代码
Dec 02 Javascript
element跨分页操作选择详解
Jun 29 Javascript
vue-openlayers实现地图坐标弹框效果
Sep 24 Javascript
吃通javascript正则表达式
Apr 21 Javascript
jquery在Chrome下获取图片的长宽问题解决
Mar 20 #Javascript
javascript中[]和{}对象使用介绍
Mar 20 #Javascript
javascript中节点的最近的相关节点访问方法
Mar 20 #Javascript
javascript中注册和移除事件的4种方式
Mar 20 #Javascript
jQuery控制输入框只能输入数值的小例子
Mar 20 #Javascript
jQuery实现id模糊查询的小例子
Mar 19 #Javascript
JS文本框不能输入空格验证方法
Mar 19 #Javascript
You might like
PHP中设置时区方法小结
2012/06/03 PHP
php类常量的使用详解
2013/06/08 PHP
PHP魔术方法使用方法汇总
2016/02/14 PHP
使用Codeigniter重写insert的方法(推荐)
2017/03/23 PHP
jQuery布局插件UI Layout简介及使用方法
2013/04/03 Javascript
js实现模拟计算器退格键删除文字效果的方法
2015/05/07 Javascript
js改变透明度实现轮播图的算法
2020/08/24 Javascript
最实用的jQuery分页插件
2016/10/09 Javascript
Bootstrap源码解读表单(2)
2016/12/22 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
2017/03/02 Javascript
vue.js的提示组件
2017/03/02 Javascript
浅谈通过JS拦截 pushState和replaceState事件
2017/07/21 Javascript
webpack@v4升级踩坑(小结)
2018/10/08 Javascript
jQuery实现的自定义轮播图功能详解
2018/12/28 jQuery
前端深入理解Typescript泛型概念
2020/03/09 Javascript
python处理cookie详解
2014/02/07 Python
python对字典进行排序实例
2014/09/25 Python
Django中更新多个对象数据与删除对象的方法
2015/07/17 Python
pycharm重置设置,恢复默认设置的方法
2018/10/22 Python
python制作简单五子棋游戏
2019/06/18 Python
python Django里CSRF 对应策略详解
2019/08/05 Python
利用CSS3的定位页面元素
2009/08/29 HTML / CSS
详解CSS3选择器的使用方法汇总
2015/11/24 HTML / CSS
Cole Haan官方网站:美国时尚潮流品牌
2017/12/06 全球购物
学校四群教育实施方案
2014/06/12 职场文书
记账会计岗位职责
2014/06/16 职场文书
机械电子工程专业求职信
2014/06/22 职场文书
运动会广播稿200字
2014/10/18 职场文书
2014年质量工作总结
2014/11/22 职场文书
2014年社区宣传工作总结
2014/12/02 职场文书
实践论读书笔记
2015/06/29 职场文书
预备党员表决心的话
2015/09/22 职场文书
教师培训学习心得体会
2016/01/21 职场文书
MySQL 中如何归档数据的实现方法
2022/03/16 SQL Server
Redis 哨兵机制及配置实现
2022/03/25 Redis
win11怎么消除图标小盾牌?win11消除图标小盾牌解决方法
2022/08/05 数码科技