Open EmberYu opened 4 years ago
开发活动中,遇到了一个需要让奖品按抛物线飘动的需求。有点类似饿了么添菜的时候从当前点沿抛物线滑入购物车的动画效果。
可以在chrome devtool中调整垂直运动的贝塞尔曲线,让动画看起来更接近加速运动
代码如下 .html
<div class="outer"> <div class="inner"></div> </div>
.css
.outer { animation: flowerAnimateX 3s linear infinite; width: 20px; height: 20px; border-radius: 50%; position: absolute; border: 1px solid green; } .inner { width: 100%; height: 100%; border-radius: 50%; background: red; animation: flowerAnimateBottom 3s cubic-bezier(0.93, 0.1, 1, 1) infinite; } @keyframes flowerAnimateX { from { transform: translate(0); } to { transform: translate(200px); } } @keyframes flowerAnimateBottom { from { transform: translateY(0); } to { transform: translateY(200px); } }
demo可以看这里: https://codepen.io/gong12339/pen/vYEzgxg
开发活动中,遇到了一个需要让奖品按抛物线飘动的需求。有点类似饿了么添菜的时候从当前点沿抛物线滑入购物车的动画效果。
需求分析
css动画好像无法直接使用单个动画来实现抛物线的运动。如果设置成多个过渡点,点与点之间的运动也是直线的,会使动画效果看起来很难受。
为了方便观察,我给父容器加了个边框,这样可以方便的看出来两个动画的叠加效果。
可以在chrome devtool中调整垂直运动的贝塞尔曲线,让动画看起来更接近加速运动
代码如下 .html
.css
demo可以看这里: https://codepen.io/gong12339/pen/vYEzgxg