博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
每周一个前端动画之一:UC浏览器球队展示动画的实现
阅读量:6415 次
发布时间:2019-06-23

本文共 1894 字,大约阅读时间需要 6 分钟。

作为一个眼中有码的人,看见某个网页或者app的炫酷效果时,第一反应就是这怎么实现的。这个系列就是把自己见到的一些动画效果分析实现出来,本文分析实现的某些效果,仅仅作为一个思路分享,仅仅作为学习素材使用。闲话不说,这篇文章是前端动画系列的第一篇。

源动画效果

作为一个轻度伪球迷,经常会看些赛事比分,比如英超(利物浦是冠军)。使用UC的朋友应该发现过,UC在展示比赛时的效果还是很炫的,动画很简单,但是效果的确不错。效果图如下:

实现分析

经过观察不难发现:

  • 动画效果是左右对称的,只要实现了一侧即可。
  • 球队的logo只是在x轴进行了移动,但是停的位置以及停顿时机都需要注意
  • 球队logo有一个从大到小的缩放
  • logo的透明度逐渐增大

分析出以上四点,就会发现效果实现起来也不复杂。

代码实现

动画使用CSS3的帧动画实现animation,不熟悉该属性用法的同学需要补补课了。注意该属性的兼容性写法,Safari 和 Chrome需要写成-webkit-animation

我们只分析左侧曼联logo的实现即可。从logo进入到动画定格,我们将整个过程分成4个部分,可以确定4个关键帧:

@-webkit-keyframes team-logo-left {}复制代码

关键帧1:logo放大一倍,x轴偏离初始位置到窗体外部。

0% {      -webkit-transform: translate3d(-145px, 0, 0) scale(2);      -webkit-transform-origin: center;      -webkit-animation-timing-function: ease-out;      opacity: .05   }复制代码

关键帧2:logo放大一倍,x轴偏离初始位置到窗体中间部分,并稍作停顿,所以使用了50%,60%作停顿,时间函数使用了cubic-bezier来调整。

50%, 60% {            -webkit-transform: translate3d(76px, 0, 0) scale(2);            -webkit-transform-origin: center;            -webkit-animation-timing-function: cubic-bezier(.33, .95, .77, 1.01);            opacity: .8        }复制代码

关键帧3:logo恢复到正常大小,x轴偏离初始位置略左侧,透明度已经变成完全不透明。

85% {            -webkit-transform: translate3d(-10px, 0, 0) scale(1);            -webkit-animation-timing-function: ease-in;            -webkit-transform-origin: center;            opacity: 1        }复制代码

关键帧4:即从偏左位置到达最终的停留位置

100% {            -webkit-transform: translate3d(0, 0, 0) scale(1);            -webkit-transform-origin: center;            opacity: 1        }复制代码

效果展示

关键点解读

计时函数animation-timing-function

  • 属性可以作用于整个动画中,定义了动画的每次循环是如何随时间递进的。
  • 该属性还可以作用于关键帧,如本例的用法,各个关键帧都有单独的计时函数。这时的计时其实指的的帧之间的时间函数,顺序播放的动画,结尾关键帧的计时函数不会生效。
  • 属性的值可选,有linear,ease,ease-in,ease-out,ease-in-out,cubic-bezier(n,n,n,n),以及还有阶跃函数steps(n,start/end),有兴趣的同学可以深入了解一下。

动画的实现其实很简单,

![](https://user-gold-cdn.xitu.io/2018/2/3/16157535de4e4f6e?w=1024&h=528&f=png&s=346745)

转载于:https://juejin.im/post/5a74902e5188257a64266f83

你可能感兴趣的文章
CentOS 7 命令行如何连接无线网络
查看>>
Ubuntu 12.04上享用新版本Linux的功能
查看>>
logstash + grok 正则语法
查看>>
Zimbra开源版(v8.6)安装说明
查看>>
Android性能优化之TraceView和Lint使用详解
查看>>
linux centos7.2 安装mysq,nginx,php
查看>>
myrocks之事务处理
查看>>
基于pgrouting的路径规划之一
查看>>
LBS核心技术解析
查看>>
Fible Channel over Convergence Enhanced Ethernet talk about
查看>>
讨论:今日头条适配方案使用中出现的问题
查看>>
CSS3 3D翻转动画
查看>>
送给即将踏入软考征途的你
查看>>
要命啦!Word中快速录入大全,内含快捷键小技巧,快来一起学习!
查看>>
javascript实现音频mp3播放
查看>>
html5-离线缓存
查看>>
linux系统安装完后的常见工作
查看>>
在Linux服务器、客户端中构建密钥对验证进行远程连接
查看>>
揪出MySQL磁盘消耗迅猛的真凶
查看>>
和“C”的再遇
查看>>