This answer to another question解释了一个小技巧,可让您使用 jQuery 为元素的旋转设置动画。
在我的情况下,我想为元素的旋转与它的 top: 和 left: 属性同时设置动画。所以我想出了这个小提琴。
function transformThing() {
$('#thing').animate({ top: '+=50', left: '+=50', borderSpacing: -90 }, {
step: function(now,fx) {
if(fx.prop === 'borderSpacing') {
$(this).css('-webkit-transform','rotate('+now+'deg)');
$(this).css('-moz-transform','rotate('+now+'deg)');
$(this).css('transform','rotate('+now+'deg)');
}
},
duration: 1000
}, 'swing');
}
$(document).ready(function() {
$('#thing').click(function () {
transformThing();
});
});
单击正方形应旋转它并将其向下和向右移动。这就是它所做的,除了在 Safari 中。我在 Mac OS X 10.7.3 上运行 Safari 5.1.5,并且只有旋转动画。
一位同事发现了这个 jQuery 插件,它可以让你用更简洁的语法做同样的事情,但它表现出同样的问题。
如果您查看 Web Inspector,您可以看到 top: 和 left: 值正在发生变化,实际上它们会更改为正确的值;但它们不会影响元素的视觉布局,除非您将它们关闭并再次打开。
显然,答案是“嗯,呃,这是一个 Safari 错误”。但是有没有更深入的解释可以帮助我找到解决方法,或者我可以尝试什么?