好的,所以我假设您有一个全局变量定义为value
如果这是您想要的,您可以使用以下代码以 90 度为增量旋转:
var value = 0;
$('#rotate-btn').click(function (e) {
var element = $("#image_canv");
var startDegree = value;
var endDegree = value + 90;
value += 90;
$({ i:startDegree }).animate({ i: endDegree }, {
step: function(now,fx) {
element.css({transform : 'rotate('+ now + 'deg)' });
},
duration: 1000
});
});
这是它工作的一个例子:http: //jsfiddle.net/hQHhf/4/
如果您需要以其他增量旋转,则需要稍微更改代码以适应这些需求。但基本上,您的value
变量应该始终与 相同,endDegree
以便下一次旋转将从图像的正确位置开始。
这是一个如何使用它的示例,如果您想要进行不同程度的旋转,无论是正的和/或负的(为此,我将 rotate-btn 的 id 更改为一个类,并赋予它自己的旋转功能任何学位):
var value = 0;
$('.rotate-btn').click(function (e) {
doRotate($(this).val(), 1000);
});
function doRotate(degrees, delay) {
var element = $("#image_canv");
var startDegree = value;
var endDegree = value + parseInt(degrees);
value = value + parseInt(degrees);
$({ i:startDegree }).animate({ i: endDegree }, {
step: function(now,fx) {
element.css({transform : 'rotate('+ now + 'deg)' });
},
duration: delay
});
}
这是一个例子:http: //jsfiddle.net/hQHhf/6/
还对 HTML 进行了一些小的编辑,例如使用<button>
而不是<input>
向doRotate
函数发送适当的值以及其他一些小的编辑。
希望这可以帮助您了解它的要点并将其应用于您的需求。另外,因为您在图像上设置了 400 的宽度和 300 的高度,而 chrome 似乎不受此影响,但其他一些浏览器(如 firefox)会受到影响。例如,当图像旋转时,大小也随之旋转,这是因为您的图像的宽度和高度的大小不相等,因此在所有浏览器中它看起来都不会自然旋转。如果你同时给出宽度和高度,相同的尺寸你不会有这个问题。