【问题标题】:CSS Animation Delay Not WorkingCSS动画延迟不起作用
【发布时间】:2014-08-24 15:51:08
【问题描述】:

尝试淡入一个 div .... 7 秒后,淡入另一个 div。我终其一生都无法弄清楚为什么它不起作用。动画本身可以工作(淡入/淡出动画),但我需要“正在运行”的 div 在设定的几秒钟后淡入。有人知道如何正确执行此操作吗?

.coming{
    width:320px;
    height:auto;
    position:absolute;
    top:0px;
    left:0px;
    margin-left:10px;
    background:#FFF;
    color:#000;
    font-family: Sans-Serif;
    font-size:24px;
    border-radius: 10px 10px 10px 10px;
    -moz-box-shadow: 0px 0px 0px #000;
    -webkit-box-shadow: 0px 0px 0px #000;
    box-shadow: 1px 1px 5px #222;
    padding:2px 20px;

    }

#people .coming{
    -moz-animation: fadein 3s ease-in; /* Firefox */
    -webkit-animation: fadein 3s ease-in; /* Safari and Chrome */
    -o-animation: fadein 3s ease-in; /* Opera */
    animation: fadein 3s ease-in;
}


.going{
    width:320px;
    height:auto;
    position:absolute;
    top:120px;
    left:0px;
    margin-left:10px;
    background:#FFF;
    color:#000;
    font-family: Sans-Serif;
    font-size:24px;
    border-radius: 10px 10px 10px 10px;
    -moz-box-shadow: 0px 0px 0px #000;
    -webkit-box-shadow: 0px 0px 0px #000;
    box-shadow: 1px 1px 5px #222;
    padding:2px 20px;
}


#people .going{
    animation-delay: 7s;
    -moz-animation: fadein 3s ease-in; /* Firefox */
    -webkit-animation: fadein 3s ease-in; /* Safari and Chrome */
    -o-animation: fadein 3s ease-in; /* Opera */
    animation: fadein 3s ease-in;

}

谢谢。小提琴在这里:

http://jsfiddle.net/yZ4va/1/

【问题讨论】:

    标签: css css-animations


    【解决方案1】:

    将以下内容用于您的.going 课程。动画属性中的forwards 将确保在执行最后一个关键帧后块不会回到opacity:0(不可见)。

    #people .going{
        opacity: 0;
        -moz-animation: fadein 3s ease-in 7s forwards; /* Firefox */
        -webkit-animation: fadein 3s ease-in 7s forwards; /* Safari and Chrome */
        -o-animation: fadein 3s ease-in 7s forwards; /* Opera */
        animation: fadein 3s ease-in 7s forwards;
    }
    

    以上是做动画延迟的简写。

    Fiddle Demo

    【讨论】:

    • 哈利,这正是我想要做的。谢谢大家的帮助。
    • 如果浏览器不支持动画怎么办。不透明度仍将应用于 0。任何解决方法?
    • @EtienneDupuis:你可以像this snippet 那样做。这避免了对opacity: 0 的需要(注意animation-fill-modeforwardsboth 的变化)。我没有不支持动画的浏览器,所以无法测试,但我相当肯定它应该可以工作。
    • @Harry 没错! animation-fill-mode 必须设置为 both。非常感谢。
    【解决方案2】:

    问题在于订单和缺少的浏览器特定名称:

    任何特定的属性都需要在更通用的行之后指定,否则它们将被覆盖。

    您还在进行中的 div 上丢失了初始 opacity: 0(它开始可见)

    Working fiddle

    更新 forwards 感谢@Harry & @ VikasGhodke 指出这一点

    #people .going{
        -moz-animation: fadein 3s ease-in forwards; /* Firefox */
        -webkit-animation: fadein 3s ease-in forwards; /* Safari and Chrome */
        -o-animation: fadein 3s ease-in forwards; /* Opera */
        animation: fadein 3s ease-in forwards;
        -moz-animation-delay: 7s;
        -webkit-animation-delay: 7s;
        -o-animation-delay: 7s;
        animation-delay: 7s;
    }
    

    您可以通过在速记语法中包含动画延迟来避免整个特定样式覆盖速记设置问题,如下所示:

    Fiddle

    #people .going{
        -moz-animation: fadein 3s ease-in 7s forwards; /* Firefox */
        -webkit-animation: fadein 3s ease-in 7s forwards; /* Safari and Chrome */
        -o-animation: fadein 3s ease-in 7s forwards; /* Opera */
        animation: fadein 3s ease-in 7s forwards;
    }
    

    【讨论】:

    • 添加 opacity:0 会在动画后让 go 类消失
    • 您好 dc5,感谢您的帮助。您的解决方案确实比我尝试的更好,但是一旦“正在运行”的 div 一直消失,它就会完全消失,我想让它留在屏幕上。有什么建议吗?我尝试将不透明度设置回 1,但这似乎不起作用。感谢您的帮助。
    • @IanProvidence 不想跳入 dc5 的回答,但您可以尝试将模式设置为 forwards,正如我在回答中提到的那样来克服这个问题。
    • 是的 - 查看@VikasGhodke 的评论和下面的 Harry 的评论 - 将更新小提琴并回答
    【解决方案3】:

    你一设置延迟就结束了..所以在你的动画之后指定你的延迟..但是又出现了一个问题.going会首先出现然后延迟之后它会消失然后显示不是一个好习惯..

    看看这个fiddle

    #people .going{
        -moz-animation: fadein 3s ease-in; /* Firefox */
        -webkit-animation: fadein 3s ease-in; /* Safari and Chrome */
        -o-animation: fadein 3s ease-in; /* Opera */
        animation: fadein 3s ease-in;
        -webkit-animation-delay: 7s;
        animation-delay: 7s;
    }
    

    另一种选择是玩计时和计时功能..

    看看这个fiddle

    .coming{
        -moz-animation: fadein 3s ease-in; /* Firefox */
        -webkit-animation: fadein 3s ease-in; /* Safari and Chrome */
        -o-animation: fadein 3s ease-in; /* Opera */
        animation: fadein 3s ease-in;
        }
    
    .going{
        animation: fadein 10s ease-in-out;
        -moz-animation: fadein 10s ease-in-out; /* Firefox */
        -webkit-animation: fadein 10s ease-in-out; /* Safari and Chrome */
        -o-animation: fadein 10s ease-in-out; /* Opera */
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-14
      • 1970-01-01
      • 2022-01-02
      相关资源
      最近更新 更多