如何在CSS动画中获得重力效果?

前端之家收集整理的这篇文章主要介绍了如何在CSS动画中获得重力效果?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想为一个元素设置动画,就好像你在俯视地球一样.元素向你跳跃,击中它的顶点,然后向下跌落一点.轨迹的侧视图如下:
_
   /   \
  /     |
 |
 |

我无法通过关键帧动画获得逼真的效果.我看起来像这样人造:

/\
   /  \
  /
 /
/

CSS

@keyframes springIn {
    0% {
        transform: scale(0.0);
    }
    80% {
        transform: scale(1.2);
    }
    100% {
        transform: scale(1.0);
    }
}

.someElement {
    animation: springIn 1s linear 1s 1 forwards;
}

如何在动画上放置抛物线函数以获得重力效果?我以为我可以使用Bezier Curves,但CSS标准不允许在[0,0]之外的点.

解决方法

我认为你可以使用贝塞尔曲线来做到这一点.

在你的情况下,它可能是这样的:

-webkit-transition: all 500ms cubic-bezier(0.310,0.440,0.445,1.650); 
-moz-transition: all 500ms cubic-bezier(0.310,1.650); 
-ms-transition: all 500ms cubic-bezier(0.310,1.650); 
-o-transition: all 500ms cubic-bezier(0.310,1.650); 
transition: all 500ms cubic-bezier(0.310,1.650); /* custom */

-webkit-transition-timing-function: cubic-bezier(0.310,1.650); 
-moz-transition-timing-function: cubic-bezier(0.310,1.650); 
-ms-transition-timing-function: cubic-bezier(0.310,1.650); 
-o-transition-timing-function: cubic-bezier(0.310,1.650); 
transition-timing-function: cubic-bezier(0.310,1.650); /* custom */

我自己没有这样做,请查看此链接

css easing animation tool

我做了an example in a JSFiddle.

我放了一个外部div来使悬停稳定:

<div class="container">
    <div class="moving"></div>
</div>

CSS如下:

.moving {
    position: absolute; width: 200px; height: 150px; top: 50px;  left: 50px;
    background-color: green;
    -webkit-transition: all 5s cubic-bezier(0.310,1.650); 
}

.container:hover .moving {
    zoom: 1.5;
}

编辑

只是一个图像,您可以通过贝松线曲线(从简易动画工具页面)获得,以显示对象速度不需要是恒定的(并且几乎可以是抛物线)

猜你在找的CSS相关文章