Ответ 1
ОБНОВЛЕНИЕ: Кажется, теперь он исправлен в Chrome 23. (см. комментарий @joequincy по исходному вопросу)
Действительно, это похоже на ошибку. Пока он не будет исправлен, вы можете работать с функцией jQuery animate()
следующим образом:
$(function() {
var rotation = 163;
$('body').on('click', function() {
rotation = (rotation == 163) ? 198 : 163;
$('#wheel').animate({
borderSpacing: rotation
}, {
step: function(now, fx) {
$(this).css('-webkit-transform', 'rotate(' + now + 'deg)');
$(this).css('-moz-transform', 'rotate(' + now + 'deg)');
$(this).css('-ms-transform', 'rotate(' + now + 'deg)');
$(this).css('-o-transform', 'rotate(' + now + 'deg)');
$(this).css('transform', 'rotate(' + now + 'deg)');
}
});
});
});
Удалите инструкции transition
CSS и добавьте:
border-spacing: 163px;
В этом примере используется атрибут border-spacing
, поскольку он не влияет на ваш макет в большинстве случаев.
См. http://jsfiddle.net/hongaar/wLTLK/1/
(Благодаря этому ответу вращение элемента анимации вращается)
ПРИМЕЧАНИЕ. Вы можете дополнительно использовать плагин преобразования jQuery для удаления уродливых множественных вызовов css()
и для более простой версии синтаксиса animate()
(но с добавлением служебных данных). См. https://github.com/louisremi/jquery.transform.js