基础准备
对于这个实现,咱们须要一个简单的 div
,而且样式类名为 ball
:css
HTML 代码:前端
<div class="ball"></div>
咱们将使用 Flexbox 布局,把球放到页面中间,尺寸为 100px * 100px,背景色为橘黄色。设计模式
CSS 代码:函数
body { display: flex; /* 使用Flex布局 */ justify-content: center; /* 水平居中 */ } .ball { width: 100px; height: 100px; border-radius: 50%; /* 把正方形变成圆形*/ background-color: #FF5722; /* 设置颜色为橙色*/ }
建立 Keyframe(关键帧)
Keyframe(关键帧) 用于 CSS 动画,以便咱们彻底控制动画。建立 Keyframe(关键帧) 的样式很是简单。咱们使用关键字 @keyframes
,在后面跟动画名称:布局
CSS 代码:学习
@keyframes nameOfAnimation { /* 代码 */ }
在这个示例中,咱们把 keyframe(关键帧) 取名为 bounce。在 Keyframe 中,用 from 和 to 关键字来指定动画开始点和结尾点的 CSS 样式。flex
CSS 代码:动画
@keyframes bounce { from { /* 开始 */ } to { /* 结束 */ } }
很简单是否是? 最后一步,咱们能够添加咱们的开始点和结尾点的 CSS 样式。为了建立反弹效果,咱们将只是改变球的位置。transform 容许咱们修改给定元素的坐标。如下是最终的 keyframe(关键帧) :spa
CSS 代码:插件
@keyframes bounce { from { transform: translate3d(0, 0, 0); } to { transform: translate3d(0, 200px, 0); } }
咱们使用 transform 让球沿着三维轴平移,translate3D 函数须要 3 个输入参数,即 (x, y, z) 。 由于咱们想让球上下跳动,咱们只须要沿着 y 轴进行平移。所以,动画结束点(即 to 中样式)的 y 值变成了 200px 。
运行 Keyframe(关键帧)
如今 @keyframe
已经建立了,是时候让它运行起来了!回到 .ball{} css
并添加如下行代码:
CSS 代码:
.ball { /* ... */ animation: bounce 0.5s; animation-direction: alternate; animation-iteration-count: infinite; }
解释一下这三行代码:
告诉 ball 元素使用咱们的 keyframe(关键帧) 规则反弹。 设置完成动画的时间长度为 .5 秒。
完成后,动画反方向执行(反转)。
无限次地运行动画。
真棒,到目前为止。 离咱们想要的已经很近了,但还不完美:
它看起来不像一个弹跳的球。那是由于咱们没有为动画设置速度曲线,默认会被设置为 ease。意思是动画的速度刚开始慢,中间变快,快结束的时候又变慢。不幸的是,这不是一个弹跳球的理想选择。幸运的是,咱们能够使用 Math 来定制这个 速度曲线!
进入太多的细节,你能够使用 bezier(贝塞尔曲线) 来指定自定义动画时间。如下是附加的代码:
CSS 代码:
.ball { /* ... */ animation: bounce 0.5s cubic-bezier(.5,0.05,1,.5); }
固然这是用 CSS Animations(动画) 和 Keyframes(关键帧) 建立的最简单的动画效果.
这里推荐一下个人前端学习交流群:784783012,里面都是学习前端的,本身整理了一份2018最全面前端学习资料,从最基础的HTML+CSS+JS【炫酷特效,游戏,插件封装,设计模式】到移动端HTML5的项目实战的学习资料都有整理,送给每一位前端小伙伴
点击:加入