【发布时间】:2013-01-30 03:34:26
【问题描述】:
我有几个类:hide 是 display: none,transparent 是 opacity: 0。元素pr_container 具有-webkit-transition: opacity 1s。以下基于 JQuery 的代码使元素以动画方式出现:
pr_container.removeClass("hide");
setTimeout(function() { pr_container.removeClass("transparent"); }, 0);
但是,当我删除 setTimeout 而只是删除第二个类时,没有动画。为什么?
编辑:我使用的是最新的 Chrome,我还没有检查其他浏览器。
编辑:我尝试将两个调用放在同一个 setTimeout 回调中 - 没有动画。所以这显然是关于分离。
编辑:这是 jsFiddle:http://jsfiddle.net/WfAVj/
【问题讨论】:
-
你怎么称呼这段代码?你能提供一个 jsfiddle 来显示发生了什么吗?
-
@Lorax 这里是:jsfiddle.net/WfAVj
-
如果您使用 jQuery,您是否有理由希望通过 CSS 过渡处理动画?使用
.animate()或.fadeTo()可能会产生更好的跨浏览器功能。 -
涉及
display的过渡最终将完全没有过渡,AFAIK。通过使用setTimeout(func,0),您将转换与display:none分开,所以它可以工作。 -
@AlexeiAverchenko 很好,我只是想把它扔掉,因为你只在 Chrome 中测试过。无论如何,这种情况似乎已经在这里被询问/回答:stackoverflow.com/a/3332179/2034234
标签: javascript jquery css css-transitions