8

我有很多.lines,我正在对它们应用淡入淡出的动画。我想知道是否有一种简单的方法可以以某种方式错开动画时间,以便每个都一个接一个地触发(与一次相反)。换句话说,我想创建一个效果,其中第一个.line开始褪色,然后第二个开始褪色,然后.line第三个开始.line褪色。这只需要在 Chrome 中工作。

div.line { width: 300px; height:5px; background:red;
           -webkit-animation: fade 20s infinite;
           -webkit-animation-timing-function: linear;
}

@-webkit-keyframes fade {
    0%   { opacity:1.0; }
    50%  { opacity:0.0; }
    100% { opacity:1.0; }
}


<div class="line"></div>
<div class="line"></div>
...
<div class="line"></div>
4

2 回答 2

11

使用 nth-child 选择每一行,然后应用动画延迟,如下所示:

.line:nth-child(1) {
    -webkit-animation-delay: 1s;
}
.line:nth-child(2) {
    -webkit-animation-delay: 2s;
}
于 2012-12-18T23:33:44.243 回答
6

SASS 解决方案可能如下所示:

这是 CodePen

样式.css
@import "compass/css3";

.my-element {
    @include transition(opacity 0.3s);
    @include opacity(0);
    @include inline-block;
    margin: 5px;
    width: 100px;
    height: 100px;
    background: tomato;

    // Loop through the items and add some delay.
    @for $i from 1 through 3 {
            &:nth-child(#{$i}) { 
             @include transition-delay(0.1s * $i); 
            }
        }

    .my-container:hover & {
        @include opacity(1);
    }
}

http://codepen.io/anon/pen/tngHy

于 2016-01-08T12:33:25.443 回答