CSS3 建立简单的网页动画 – 实现弹跳球动

clipboard.png

基础准备
对于这个实现,咱们须要一个简单的 div ,而且样式类名为 ballcss

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的项目实战的学习资料都有整理,送给每一位前端小伙伴

点击:加入

相关文章
相关标签/搜索