Вы увеличиваете вращение элемента при прокрутке, но не учитываете, как далеко пользователь прокручивал.
Вам следует переписать свой код, чтобы вместо того, чтобы всегда добавлять или вычитать один градус из поворота, вычислять величину поворота на основе того, как далеко прокрутил пользователь. Таким образом, вы можете установить начальную и конечную точки, где ваш элемент всегда будет вращаться в одном и том же месте.
Обновление
Простой пример того, о чем я говорю, здесь:
$(window).scroll(function(event){
var srotate = "rotate(" + $(this).scrollTop() + "deg)";
$("img").css({"-moz-transform" : srotate, "-webkit-transform" : srotate});
});
Вот демоверсия: http://jsfiddle.net/EnSkJ/4/
Поскольку этот код вращает элемент на основе позиции прокрутки, вращение всегда будет одинаковым в одной и той же позиции прокрутки.
Обновление
Также вы можете определить, какой браузер используется, и обновить только соответствующее свойство с префиксом продавца transform
:
var venderPrefix = ($.browser.mozilla) ? '-moz-' :
($.browser.webkit) ? '-webkit-' :
($.browser.msie) ? '-ms-' :
($.browser.opera) ? '-o-' : '';
$(window).scroll(function(event){
$("img").css(venderPrefix + "transform", "rotate(" + $(this).scrollTop() + "deg)");
});
Вот демоверсия: http://jsfiddle.net/EnSkJ/6/