我已经为某个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);例如。
有什么想法吗? :)
最佳答案
对于过渡,您可以通过用逗号分隔来指定多个过渡。
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
。您可以按照以下代码段进行设置:
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;
}
}
<div class="d1">D1</div>
<div class="d2">D2</div>
小提琴:http://jsfiddle.net/abhitalks/3y7pcd1t/1/
。