CSS3增加延迟效果?

标签 css animation delay

我有一个无序列表:

<ul>
    <li>Apple</li>
    <li>Monkey</li>
    <li>Sun</li>
    <li>Moon</li>
    <li>Movies</li>
</ul>

以及动画中的比例:

ul li {
    animation           : scale-in 1s;
}

@keyframes scale-in
{
    0% { 
        opacity             : 0;
        -webkit-transform   : scale(0.5);
    }
    20% {
        opacity             : 0;
        -webkit-transform   : scale(0.5);
    }
    100% {
        opacity             : 1;
        -webkit-transform   : scale(1.0);
    }
}

现在我希望每个元素的延迟彼此相隔 1 秒。因此第一项立即出现,第二项延迟 1 秒,第三项延迟 2 秒,依此类推。

有没有一种巧妙的方法可以做到这一点,也许使用第 n 个选择器?或者我真的必须像 ul li:nth-child(1) { delay : 1s; } ul li:nth-child(2) { delay : 2s; } 这样写出来吗?

最佳答案

除了您建议的方法之外,没有其他方法可以使用 CSS3 来执行此操作。由于没有真正的方法来进行数学运算或循环遍历事物,因此除了用手写出来之外,实际上不可能。

我不得不赞同 NightCracker 的 JS 建议。您不一定要使用 JS 编写动画本身,但您可以使用 JS 触发它。像使用带有增量计数器的 While 循环这样简单的方法就可以解决问题。

最终,您只是保存了几行代码,而不是直接用 CSS 编写。功能方面它仍然是相同的,特别是如果跨浏览器兼容性不是问题的话。

关于CSS3增加延迟效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9859105/

相关文章:

swift - 是什么导致了 SwiftUI 和 NavigationView 的这个动画错误?

javascript - HTML5 Canvas - 在不转换上下文的情况下相对于对象的中心进行缩放

JavaFX 8 : how to add a timedelay to a listener?

css - flex-shrink 如何影响 padding 和 border-box?

html - 是否可以使绝对定位的 div 出现在固定元素上方?

html - :last-child effects all img tags

javascript - Raphaeljs 将点击事件添加到饼图的一部分

c# - WPF:DoubleAnimation "To"属性绑定(bind)计时

jquery - 为什么我不能使用 jQuery 延迟删除调用

c - 如何使用代码块 13.12(mingw) 在 c 中使用 delay() 函数?