关键帧动画 - 即时更改

Mia*_*Mia 10 html html5 css3 css-transitions

我已经开始学习CSS3中的关键帧动画了.有人认为我注意到的是,无论我如何使用关键帧动画"定时"事物,过渡总是很平滑.

例如; 背景颜色从50%变为100%,是动画从50%到100%播放的平滑过渡.

我想要实现的是一种通过"即时"类型的值更改来制作动画的方法.

同样,一个例子是:如果BG的50%值为红色且BG的100%值为蓝色; 动画应保持红色直至达到100%,并在100%完成时立即变为蓝色.

我不确定我的术语是对还是错,但无论如何,某些方向都是完美的.

ext*_*ter 13

您可以使用步骤作为计时功能来暂停动画直到下一个关键帧

CSS:

    -webkit-animation-timing-function: steps(1, end);
    -moz-animation-timing-function: steps(1, end);
    -ms-animation-timing-function: steps(1, end);
    -o-animation-timing-function: steps(1, end);
    animation-timing-function: steps(1, end);
Run Code Online (Sandbox Code Playgroud)

示例代码:

@keyframes quick {
    0% {
        background-color:green;
    }
    50% {
        -webkit-animation-timing-function: steps(1, end);
        -moz-animation-timing-function: steps(1, end);
        -ms-animation-timing-function: steps(1, end);
        -o-animation-timing-function: steps(1, end);
        animation-timing-function: steps(1, end);
        background-color:blue;
    }
    100% {
        background-color:red;
    }
}
@-o-keyframes quick {
    0% {
        background-color:green;
    }
    50% {
        -o-animation-timing-function: steps(1, end);
        background-color:blue;
    }
    100% {
        background-color:red;
    }
}
@-moz-keyframes quick {
    0% {
        background-color:green;
    }
    50% {
        -moz-animation-timing-function: steps(1, end);
        background-color:blue;
    }
    100% {
        background-color:red;
    }
}
@-webkit-keyframes quick {
    0% {
        background-color:green;
    }
    50% {
        -webkit-animation-timing-function: steps(1, end);
        background-color:red;
    }
    100% {
        background-color:blue;
    }
}
body {
    height:100%;
    width:100%;
    animation:quick 3s;
    -moz-animation:quick 3s;
    -webkit-animation:quick 3s;
    -o-animation:quick 3s;

    -webkit-animation-fill-mode: forwards;
    -moz-animation-fill-mode: forwards;
    -o-animation-fill-mode: forwards;
    animation-fill-mode: forwards;
}
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/sC5fy/1/


小智 5

我刚刚遇到了这个问题,并通过在开始时标记初始值,然后在我希望立即发生更改之前再次标记来解决这个问题 - 见下文

@-webkit-keyframes image2 {
  0%   {opacity: 1;}
  24.99%   {opacity: 1;}
  25%  {opacity: 0;}
  100% {opacity: 0;}
}
Run Code Online (Sandbox Code Playgroud)