CSS3针对不同属性的不同自定义缓动

时间:2014-11-20 12:23:51

标签: css html5 css3 css-animations easing

我为某个div设置了一个动画。

.Animation
{
-webkit-animation-fill-mode: both; /*and also -moz, -ms etc. */
animation-fill-mode: both;
-webkit-animation-delay: 1s;
animation-delay: 1s;
-webkit-animation-duration: 2s;
animation-duration: 2s;
}

@-webkit-keyframes scaleAnimation /*and also -moz, -ms etc. */ 
{ 
0%
{
    opacity: 0;
    -webkit-transform: scale(2);
}

100%
{
    opacity: 1;
    -webkit-transform: scale(1);
}
}

.ScaleAnimation
{
-webkit-animation-name: scaleAnimation;  /*and also -moz, -ms etc. */
animation-name: scaleAnimation;
}

但我想要一个不同的自定义缓动(立方贝塞尔)用于不透明度和另一个自定义的变换。我该如何让它发挥作用。

以下没有成功:

transition: opacity 1s ease-in-out;
transition: scale 1s ease-in-out;

所以它肯定不会使用自定义缓解,立方贝塞尔(0.555,-0.130,0.270,1.075);例如。

有什么想法? :)

1 个答案:

答案 0 :(得分:2)

对于过渡,您可以通过逗号分隔这些过渡来指定多个过渡。

transition: <duration> <property> <delay> <timing-function>, ....
transition: 1s opacity 1s ease-in-out, 1s scale 1s linear;

如果你想去动画/关键帧路线,那么你可以创建两个动画关键帧。一个用于比例,另一个用于不透明度。然后用逗号分隔它们在元素的动画设置中。

缓和的属性为animation-timing-function。对于基于webkit的浏览器(从您的问题看来,您不介意供应商前缀),它变为-webkit-animation-timing-function

您可以将其设置为此代码段:

&#13;
&#13;
div {
    width: 120px; height: 120px;
    background-color: red;
    display: inline-block;
}

div.d1 {
    -webkit-animation-fill-mode: both;
    -webkit-animation-delay: 2s, 2s;
    -webkit-animation-duration: 2s, 2s;
    -webkit-animation-name: scaleAnimation, opacityAnimation;
    -webkit-animation-timing-function: 
        cubic-bezier(0.1, 0.7, 1.0, 0.1),  ease-in;
}

div.d2 {
    -webkit-animation-fill-mode: both;
    -webkit-animation-delay: 2s, 2s;
    -webkit-animation-duration: 2s, 2s;
    -webkit-animation-name: scaleAnimation, opacityAnimation;
    -webkit-animation-timing-function: linear linear;
}

@-webkit-keyframes scaleAnimation { 
    0% {
        -webkit-transform: scale(2);
    }
    100% {
        -webkit-transform: scale(1);
    }
}

@-webkit-keyframes opacityAnimation { 
    0% {
        opacity: 0;
    }
    100% {
        opacity: 1;
    }
}
&#13;
<div class="d1">D1</div>
<div class="d2">D2</div>
&#13;
&#13;
&#13;

小提琴:http://jsfiddle.net/abhitalks/3y7pcd1t/1/