简介:无论动画以何种技术载体呈现,无论是传统的手绘动画,还是电脑生成的3D动画,也无论是用Flash还是CSS, 动画的基本原理和设计准则都未曾变过的。 在这篇文章中,我们会先解释CSS动画的基本概念,并且介绍使用CSS创建动画的要点。我们以一个例子贯穿始终,利用传统动画的准则来逐步构建这个动画。

接上篇

CSS 动画指南: 原理和实战 (一)

作者: Tom Waterhouse

原文连接:http://coding.smashingmagazine.com/2011/09/14/the-guide-to-css-animation-principles-and-examples/#more-105335

译者: feijia  (tiimfei@gmail.com)

(译者注:本文章中的示例页面需要翻墙,并推荐使用最新的FF,Chrome等查看)

次要动作(Secondary Action)

要使动画逼真必须关注细节,除了描绘动画角色的主要动作外,需要通过对次要动作的描绘进一步增加动画的真实感。正如谚语所说“恶魔藏在细节里” 。例如,如果要刻画一个长发飘飘的姑娘在走路时,人物行走是主要动作,而次要动作则是她那跟随步伐摇摆弹跳的长发,又或是她随风摆动的裙角。 通过描绘这些细节(次要动作),能够让观众进一步感到动画的逼真。

当然在我们的小球动画中,要比这简单多了。要给小球的下落增加一些细节,我们可以选择让小球在运动中旋转。那会创造一种小球被人投掷到舞台上的感觉。

这次我们不用额外添加一个div来实现这一效果,我们可以把这个旋转的动画直接应用到用来显示小球纹理的img元素上

.ball img {
-webkit-animation: spin 2.5s;
}@-webkit-keyframes spin {0% { -webkit-transform: rotate(-180deg); }100% { -webkit-transform: rotate(360deg); }
}

作者: Tom Waterhouse 译者: feijia  (tiimfei@gmail.com)

查看示例

恰当的节奏(Timing )

这一点很好理解,动画中的物体的运动的速度,节奏,直接关系到他们看起来是不是逼真。  我们的小球动画就是一个生动的例子。 我们目前设定的小球运动的节奏使它看起来比较符合一个质量很轻的网球被抛掷的速度,试想如果我们是在掷一个沉重的保龄球,那么球下落的一定会比较快。 (译者:作者原话,纠结于“两个铁球同时落地“的同学,我想他的意思是,如果是一个弹性很小的保龄球,它落地后再反弹的高度会短很多)同样,如果我们让动画再慢一些,那同样会让它看起来不真实,好似是在太空中打网球了。

通过调整animation-duration属性,你可以调整动画运行的整体时间从而调整动画运动的节奏,同样你也可以通过设置百分比的方法来进行微调。

夸张(Exaggeration)

虽然前面我们说了种种通过模拟物理规律来让动画逼真的方法,但是卡通形象当然也不必处处遵循物理规律,恰到好处的夸张可以增加效果。 比如卡通形象可以变形成任何形状,并最后再变回来。夸张的效果可以使一个动作看起来不那么平淡,也可以起到强调的作用。

掌握何时使用夸张的火候很有技巧,迪斯尼动画有一条规则说:在动画中大部分时候尽量模拟真实的基础上再并稍稍使它超出一点。好像一个动画人物跑向一堵墙,他的身体会被挤压到墙上(当然现实世界不会发生这样的情形),这种挤压就是那部分微微夸张的效果。

我们使用了夸张这一技巧(挤压和拉伸)来强调球在落地时的效果。我还额外添加了一个微小的颤动效果。最后,我们还加入了球在弹起后加入了拉伸效果来表达它的速度感。

向前几次一样,为了加入颤动,我又加了一个新的div,它将会随着球落地而抖动。示例代码如下:

@-webkit-keyframes wobble {0%, 24%, 54%, 74%, 86%, 96%, 100% {-webkit-transform: scaleX(1.0);
/* 在这些位置,球将会回到正常形状 */
}25%, 55%, 75% {-webkit-transform: scaleX(1.3) scaleY(0.8) translateY(10px);
/* 球落地的位置:压缩效果(宽度增加,高度变小) */
}30%, 60%, 80% {-webkit-transform: scaleX(0.8) scaleY(1.2);
/* 球落地后的几个收缩的点 */
}75%, 87% {-webkit-transform: scaleX(1.2);
/* Subtler squash for the last few bounces */
}97% -webkit-transform: scaleX(1.1);
/* Even subtler squash for last bounce */
}}

代码看起来有些复杂,不过不用担心,通过不断调整直到你觉得达到了你设想的效果。 
作者: Tom Waterhouse 译者: feijia  (tiimfei@gmail.com)
查看示例

扎实的绘画和人物的魅力(Solid Drawing and Appeal)

我能教你的就这么多了,至少没有更多的示例代码了。最后两条准则没办法CSS代码演示。 可它们是你必须掌握的使动画臻于完美的技巧。 

当迪斯尼在制作白雪公主动画时,它把动画师们派回重新去上绘画课,重新理解人类的动作。这种对细节的关注直接提现在它的作品中,优秀的动画必须有扎实的绘画功底,以及对你所描绘事物的细致理解(也许是一个网球,也许是一个人物)

虽然大多数CSS动画可能不会像一个人物动画那么复杂,不过这一原则仍然有效。无论是模拟一扇打开的门,还是制作一个用于”联系我们“图表的打开信封的小动画,都应当尽量逼真。

每个人物的魅力(Appeal) 都是独一无二的。迪斯尼的成功经验告诉我们,任何事物都可以有自己的性格:哪怕是一个茶壶,一棵树,或是一把调羹。使用CSS的创造网页动画,我们也应该考虑这一动画如何帮助提升页面整体设计和体验的作用

开始行动吧!

作者: Tom Waterhouse 译者: feijia  (tiimfei@gmail.com)
动画是项了不起的CSS3新特性。就像其他CSS的新功能,人们很有可能会误用甚至滥用它,我们也许会重新看到过去那种Flash風格的花哨頁面。不过我相信今天的Web开发者们应该不会重蹈覆辙。

CSS动画可以让网站生动起来,我们的弹跳的网球球的示例代码也许不是最好的例子,但是它演示了要在页面中加入一个逼真的CSS动画的必要步骤。

有了CSS动画,你可以给你的页面元素加入许多互动性(而且是在不用Flash前提下!),配合JavaScript,它甚至可以用来制作网页游戏。 通过应用本文所介绍的12条准则,你可以为你的网站制作出更加逼真可信的动画,从而提升网站的整体用户体验。
作者: Tom Waterhouse 译者: feijia  (tiimfei@gmail.com)

CSS动画工具

作者: Tom Waterhouse 译者: feijia  (tiimfei@gmail.com)
许多工具可以帮助你制作CSS动画。

Sencha Animator

Adobe Edge

Tumult(mac only)

真实的CSS动画案例

看看真实应用中的CSS动画会让你对它所能实现的效果有更深的影响。

CSS Spider-man animation by Anthony Calzadilla

CSS Tricks (animated typography person),by Mircea Piturca

Walking man,by Andrew Hoyer

Learning CSS3: Useful References and Guidelines, on Smashing Magazine
Mastering CSS Principles: A Comprehensive Guide, on Smashing Magazine
作者: Tom Waterhouse 译者: feijia  (tiimfei@gmail.com)

========================================

作者: Tom Waterhouse 译者: feijia  (tiimfei@gmail.com)

译者补充, 下面的代码可以检查用户浏览器是否支持CSS 动画

var animation = false,animationstring = 'animation',keyframeprefix = '',domPrefixes = 'Webkit Moz O ms Khtml'.split(' '),pfx  = '';if( elm.style.animationName ) { animation = true; }    if( animation === false ) {for( var i = 0; i < domPrefixes.length; i++ ) {if( elm.style[ domPrefixes[i] + 'AnimationName' ] !== undefined ) {pfx = domPrefixes[ i ];animationstring = pfx + 'Animation';keyframeprefix = '-' + pfx.toLowerCase() + '-';animation = true;break;}}
}

CSS 动画指南: 原理和实战(二)相关推荐

  1. CSS 动画指南: 原理和实战

    简介:无论动画以何种技术载体呈现,无论是传统的手绘动画,还是电脑生成的3D动画,也无论是用Flash还是CSS, 动画的基本原理和设计准则都未曾变过的. 在这篇文章中,我们会先解释CSS动画的基本概念 ...

  2. [京东实践干货]手把手教你实现「京喜工厂」的CSS动画效果

    0 契机与背景 今年Q1(2020年第一季度)参与了京喜事业部「京喜工厂」业务的前端开发.用户可以通过「京喜工厂」参与口罩.抽纸.大米等商品的"在线生产",既能趣味造物,又能免费领 ...

  3. Taro多端开发实现原理与项目实战(二)

    Taro多端开发实现原理与项目实战(二) 多端电商平台项目概述及开发准备 学习了前面的基础知识和进阶后是否跃跃欲试?我们准备了一个电商平台的项目来和大家一起实践使用 Taro 开发电商平台. 项目概述 ...

  4. Vue07---vue中的css动画原理及animate.css使用

    目录 一.transition过渡动画原理 二.使用keyframes关键帧 三.在vue中使用animate.css 同时使用过渡和动画 一.transition过渡动画原理 当元素被transit ...

  5. 用 CSS 设计漂亮的阴影,css阴影和原理,所有知识点多图动画演示

    文章目录 1.为什么要使用阴影? 好处 2.动画讲述原理 2.1创建一致的阴影 2.2投影角度 2.3海拔 2.4总结: 3.实战技巧 3.1分层 3.2颜色匹配阴影 3.3总结 4.最后讲一下:fi ...

  6. html设置样式不继承_web前端入门到实战:css的核心原理分为优先级原则与继承原则两大部分...

    css原理:1.优先原则=>后解析的内容会覆盖之前解析的内容(所谓解析就是读取的css样式)2.继承原则=>嵌套里面的标签拥有外部标签的某些样式,子元素可以继承父元素的属性 1>优先 ...

  7. css hover变成手_web前端入门到实战:彻底掌握css动画「transition」

    马上就2020年了,不知道小伙伴们今年学习了css3动画了吗? 说起来css动画是一个很尬的事,一方面因为公司用css动画比较少,另一方面大部分开发者习惯了用JavaScript来做动画,所以就导致了 ...

  8. html图片视频渲染原理,初识浏览器渲染原理和CSS动画

    1.浏览器渲染原理 浏览器到底是怎么将一个html文件渲染成生动的页面的?话不多说,直接看图 以图中的过程,浏览器的渲染过程大致就是: 通过HTML解析将HTML文件解析为 DOM 树; 通过CSS解 ...

  9. Vue 中 CSS 动画原理

    下面这段代码,是点击按钮实现hello world显示与隐藏 <div id="root"><div v-if="show">hello ...

最新文章

  1. CxImage图像处理类库
  2. namenode与datanode
  3. HALCON基于形状匹配详解
  4. 拳王虚拟项目公社:闲鱼怎么卖虚拟资源商品,会不会被封号?虚拟资源自动化出售
  5. SwitchHosts修改hosts利器
  6. 挤房工具发布--支持最新版浩方和VS平台
  7. 关于数据元、元数据、主数据、交易数据、主题数据、数据资源、大数据、数据湖等数据相关概念理解和总结
  8. #博学谷it学习技术支持# Java学习心得
  9. ArcGIS地理数据处理高级教程_004_1遇到没有地理参照系信息的数据怎么办
  10. 使用keil4 下载.hex文件
  11. C语言新手入门练习之三子棋
  12. 金山文字 职称计算机,职称计算机:金山文字2005考试大纲
  13. 关于时区、时间、时刻
  14. JavaWeb(kuang)
  15. 众里资讯——黑客用改造版的Excel XLL档散步窃密软件
  16. Rmarkdown的PDF文件插入本地图片
  17. 服务器维护抓修玛,魔兽世界怀旧服狮王休玛位置(狮王休玛捕捉攻略)
  18. [源码和文档分享]基于java语言的C/S模式网络聊天室软件
  19. STM32产生SPWM波
  20. osgearth_geodetic_graticule--经纬网

热门文章

  1. MFC 实现记事本功能
  2. ssm(springmvc4+spring4+mybatis3)整合实战-个人博客系统-整合各大框架
  3. linux 网卡加网桥,CentOS 7网卡网桥设置
  4. 发一个原创手绘唯美Flash《很爱很爱你》
  5. linux中的绝对路径和相对路径
  6. 电脑文件永久删除了怎么恢复?
  7. 并发王者课-青铜10:千锤百炼-如何解决生产者与消费者经典问题
  8. Some objects were not cleaned up when closing the scene.
  9. java操作图片为啥改了图片以后底片是红色的
  10. 数据结构-线性表的查找