当位置更改时,CSS转换在Firefox中不起作用

前端之家收集整理的这篇文章主要介绍了当位置更改时,CSS转换在Firefox中不起作用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我发现烦人的bug在同一时刻,父项的位置正在改变(在例子中是从固定的到绝对的),我尝试为子元素的CSS属性设置动画.这在Webkit浏览器中没有问题,但在Firefox(v.17.0.1)中没有动画转换.

jsFiddle示例:http://jsfiddle.net/chodorowicz/bc2YC/5/

有没有解决方案使其在FF中工作?

编辑
它在Firefox 34中修复
https://bugzilla.mozilla.org/show_bug.cgi?id=625289

CSS

#container {
    position:fixed; left:100px; top:100px;
}
#container.some_state_position {
    position:absolute;
}
.Box {
    width:100px; height:100px;
    background:blue;
}

.some_state .Box {
    background:red; width:50px; height:50px;
}

img,.Box  {
    -webkit-transition:all 1.5s ease;
    -moz-transition:all 1.5s ease;
    -ms-transition:all 1.5s ease;
    transition:all 1.5s ease;
}
img {width:100%;}
.some_state .other_container img {
    width:50%;
}

解决方法

看来你发现了一个很好的bug.虽然这不是我最喜欢的解决方案,但是它的工作.点击按钮更改你的button2.
$("#button2").on({
    click: function() {
        $("#container").toggleClass("some_state");

        setTimeout(function() {
            $("#container").toggleClass("some_state_position");
        },50);
    }
});

对于firefox来说,toggleClass()会立即触发两个类,从而导致转换效果的一些问题.放置超时给jQuery足够的时间来处理它需要什么,以便进行类似于Chrome中的转换等等.我将超时设置为50ms,这似乎给了足够的时间让jQuery处理它需要做.低于我看到的有时,它失败,做你正在经历的事情.

猜你在找的CSS相关文章