【发布时间】:2013-02-17 22:06:44
【问题描述】:
我正在创建一个跨浏览器兼容的旋转 (ie9+),我在 jsfiddle 中有以下代码
$(document).ready(function () {
DoRotate(30);
AnimateRotate(30);
});
function DoRotate(d) {
$("#MyDiv1").css({
'-moz-transform':'rotate('+d+'deg)',
'-webkit-transform':'rotate('+d+'deg)',
'-o-transform':'rotate('+d+'deg)',
'-ms-transform':'rotate('+d+'deg)',
'transform': 'rotate('+d+'deg)'
});
}
function AnimateRotate(d) {
$("#MyDiv2").animate({
'-moz-transform':'rotate('+d+'deg)',
'-webkit-transform':'rotate('+d+'deg)',
'-o-transform':'rotate('+d+'deg)',
'-ms-transform':'rotate('+d+'deg)',
'transform':'rotate('+d+'deg)'
}, 1000);
}
CSS 和 HTML 非常简单,仅用于演示:
.SomeDiv{
width:50px;
height:50px;
margin:50px 50px;
background-color: red;}
<div id="MyDiv1" class="SomeDiv">test</div>
<div id="MyDiv2" class="SomeDiv">test</div>
旋转在使用.css() 时有效,但在使用.animate() 时无效;为什么会这样?有办法解决吗?
谢谢。
【问题讨论】:
-
jQuery 不知道如何为旋转设置动画。也许使用 CSS3 过渡?
-
@JanDvorak - 除了 IE9 不支持 CSS3 过渡。
-
我会赞成“修复它”部分(您最终可能会实现
step回调),但“为什么会这样”部分非常清楚。 -
@Spudley:是的,我知道:IE9 支持的目标是使用 setInterval 并多次调用 DoRotate 函数。
-
顺便说一句 - 我已经在我对你的另一个问题的回答中指出了 CSS Sandpaper 库,它是 IE 中 CSS 转换的 polyfill。您可能想尝试一下。
标签: jquery css rotation jquery-animate