jQuery扩展--图片旋转效果

//degree:旋转角度,正数(顺时针),负数(逆时针),0或360的倍数则不产生旋转效果
jQuery.fn.rotate = function(degree){
	this.css({'cursor':'pointer','position':'absolute','filter':'progid:DXImageTransform.Microsoft.Matrix(sizingmethod="auto expand")'});
	var ua = navigator.userAgent
	var isIE = /msie/i.test(ua) && !window.opera;
	var i = 0, sinDeg = 0, cosDeg = 0, timer = null;
	function run(target,angle) {
		var orginW = target.clientWidth
		var orginH = target.clientHeight;
		if (isIE) { // IE
			cosDeg = Math.cos(angle * Math.PI / 180);
			sinDeg = Math.sin(angle * Math.PI / 180);
			with(target.filters.item(0)) {
				M11 = M22 = cosDeg; M12 = -(M21 = sinDeg); 
			}
			target.style.top = (orginH - target.offsetHeight) / 2 + 'px';
			target.style.left = (orginW - target.offsetWidth) / 2 + 'px';
		} else if (target.style.MozTransform !== undefined) {  // Mozilla
			target.style.MozTransform = 'rotate(' + angle + 'deg)';
		} else if (target.style.OTransform !== undefined) {   // Opera
			target.style.OTransform = 'rotate(' + angle + 'deg)';
		} else if (target.style.webkitTransform !== undefined) { // Chrome Safari
			target.style.webkitTransform = 'rotate(' + angle + 'deg)';
		} else {
			target.style.transform = "rotate(" + angle + "deg)";
		}
	};	
	degree %= 360;
	return this.each(function(){
		if(degree == 0){
			return;
		}
		var target = jQuery(this)[0];
		clearInterval(timer);
		timer = setInterval(function() {			
			if(degree < 0){//逆时针
				i -= -degree < 5 ? -degree : 5;
				run(target,i);
				if (i < degree + 1) {
					i = 0;
					clearInterval(timer);
				} 
			}else{//顺时针
				i += degree < 5 ? degree : 5;
				run(target,i);
				if (i > degree - 1) {
					i = 0;
					clearInterval(timer);
				} 
			}
		}, 50); 
	});
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值