使用 IE9 支持的 jQuery 旋转 div

Posted

技术标签:

【中文标题】使用 IE9 支持的 jQuery 旋转 div【英文标题】:Rotating a div using jQuery that's supported by IE9 【发布时间】:2013-07-27 05:18:57 【问题描述】:

我有一些 div(基本上只是图像)在 360 度旋转时会淡入。一切在所有主流浏览器中都能完美运行,只是 IE 不行。

有效的 CSS3 代码

#box

    width: 400px;
    height: 400px;
    display: inline-block;
    position: absolute;
    transform: rotate(0deg);
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    transition: all 0.8s 1s ease-in-out;
    -webkit-transition: all 0.8s 1s ease-in-out;
    -moz-transition: all 0.8s 1s ease-in-out;
    -o-transition: all 0.8s 1s ease-in-out;
    opacity:0;


#box.animate

    transform: rotate(360deg);
    -webkit-transform: rotate(360deg);
    -moz-transform: rotate(360deg);
    -o-transform: rotate(360deg);
    -ms-transform: rotate(360deg);
    opacity:100;

现在我的 jQuery 代码是

$("#box").addClass("animate");

不幸的是,这就是我对 jQuery 的了解程度。我知道我可以使用fadeIn() 函数来处理不透明度设置,但是有什么可以处理旋转部分?使用任何类型的插件也确实是不得已而为之。我只需要它在 IE9 中工作。如果可以在 Chrome、FF 和 Opera 中运行,那也很棒,但不是必须的。

有没有类似的东西

$("#box").animate(function() 
    $(this).fadeIn(1000).rotate(360);
);

我觉得这是一个相当简单的解决方案,我只是想不出该怎么做。另外,我不知道该代码是否有效,我不是 JS 大师。

【问题讨论】:

什么在 IE 中不起作用?旋转?褪色?两者都有? IE9 会忽略我在 CSS 中的旋转和不透明度设置。 如果下界有效,首先将代码剥离为两者之一(不透明度),然后单独工作。您是否研究过 IE9 是否支持您正在使用的 css? caniuse.com/css-transitions 是的,我做过研究。 IE9 不支持我的 CSS,这就是我研究 jQuery 备份计划的原因。 当有插件可以为您完成时,自己重写它是一个坏主意。尤其是因为你不想要插件,你基本上是在要求我们为你写一个插件。 【参考方案1】:

听起来像是jquery的step函数要解决的问题。它比使用插件轻一点,你应该能够自定义不透明度和旋转动画。 This 是一篇关于如何使用 step 函数的优秀帖子。从那篇文章推断,我得出以下结论:

function AnimateRotate(div_id, angle) 
    var $elem = $(div_id);
    $(deg: 0).animate(deg: angle, 
        duration: 1000,
        step: function(now) 
            $elem.css(
                transform: 'rotate(' + now + 'deg)'
            );
        
    );
    $(opacity: 0).animate(opacity: angle, 
        duration: 1000,
        step: function(now) 
            $elem.css(
                opacity: now
            );
        
    );

【讨论】:

@codedme 我的理解是转换有效(来自帖子的“有效的 CSS3 代码”部分),而发帖人只是不知道如何对其进行动画处理(让它从原始值 - 与 fadeIn 的工作方式类似)【参考方案2】:

我能想到的唯一解决方案是 CSS Sand paper。它是 CSS 转换的 polyfill:

检查此链接: http://www.useragentman.com/blog/csssandpaper-a-css3-javascript-library/

#box
  
   -sand-transform: rotate(360deg);
  

这是您可以旋转它的方式,但要制作动画,您需要使用 .animate() 步进函数,例如 @dbratcher 解决方案。

【讨论】:

以上是关于使用 IE9 支持的 jQuery 旋转 div的主要内容,如果未能解决你的问题,请参考以下文章

IE9下支持jQuery

填个小坑,Vue不支持IE8及以下,跨域ajax不支持IE9

对象不支持IE9中的属性或方法'submit'

CSS3 变换:旋转;在 IE9 中

让IE8和IE9支持 placeholder

旋转时图标在 IE9 和 IE10 中消失