Javascript 简单的css转换不需要';行不通

Javascript 简单的css转换不需要';行不通,javascript,css,transition,Javascript,Css,Transition,我在Firefox和Chrome中重复动画时遇到一些问题。 我使用简单的js使其可重复 (function step() { setTimeout(function() { var coin7 = document.getElementById('coin7'); coin7.style.display = 'block'; coin7.style.height = "210px"; }, 2000) setTimeout

我在Firefox和Chrome中重复动画时遇到一些问题。 我使用简单的js使其可重复

(function step() {
    setTimeout(function() {
        var coin7 = document.getElementById('coin7');
        coin7.style.display = 'block';
        coin7.style.height = "210px";
    }, 2000)

    setTimeout(function(){
        coin7.style.display = "none";
        coin7.style.height = "0";
    },6000);
    setTimeout(step, 7000)
})();
Demolink

第一次迭代在所有浏览器中都可以,但第二次和下一次并没有在FF39和最新的Chrome中应用css转换。在IE11的所有迭代中,它仍然可以正常工作


如何修复此问题?

尝试在超时为0的情况下应用高度,以确保在将“显示”设置为“块”后发生此问题(这会阻止动画)


尝试在超时为0的情况下应用高度,以确保在将“显示”设置为“块”(这会阻止动画)后发生此情况

试试这个

只需删除
coin7.style.display='none'这就是解决方案

HTML

Javascript

(function step() {
    setTimeout(function() {
        var coin7 = document.getElementById('coin7');
        coin7.style.display = 'block';
        coin7.style.height = "210px";
    }, 2000)

    setTimeout(function(){
        coin7.style.height = "0px";
    },6000);
    setTimeout(step, 7000)
})();
看看这个

试试这个

只需删除
coin7.style.display='none'这就是解决方案

HTML

Javascript

(function step() {
    setTimeout(function() {
        var coin7 = document.getElementById('coin7');
        coin7.style.display = 'block';
        coin7.style.height = "210px";
    }, 2000)

    setTimeout(function(){
        coin7.style.height = "0px";
    },6000);
    setTimeout(step, 7000)
})();

查看此

此解决方案非常有效,但在setTimeout的第二个参数处需要10毫秒或更长时间。非常感谢。这个解决方案工作得非常出色,但在setTimeout的第二个参数处需要10毫秒或更长时间。非常感谢。是的,它工作了,我需要保存显示的逻辑,这就是为什么我不能使用你的解决方案。谢谢你的帮助。是的,它工作了,我需要保存显示的逻辑,这就是为什么我不能使用你的解决方案。谢谢你的帮助。
#coin7 {
      overflow: hidden; display: block; height: 0px;
        -moz-transition: all 3s ease-in-out;
        -webkit-transition: all 3s ease-in-out;
        -o-transition: all 3s ease-in-out;
        -ms-transition: all 3s ease-in-out;
        transition: all 3s ease-in-out;
        }
(function step() {
    setTimeout(function() {
        var coin7 = document.getElementById('coin7');
        coin7.style.display = 'block';
        coin7.style.height = "210px";
    }, 2000)

    setTimeout(function(){
        coin7.style.height = "0px";
    },6000);
    setTimeout(step, 7000)
})();