CSS3 中 Transform、 Transition 、Animation 之间的区别与联系

标签: HTML5&CSS3 | 发表时间:2012-06-07 17:29 | 作者:小魁天下
出处:http://www.csscoo.com
1.Transform 在部分的test case当中,每每演示transform属性的,看起来好像都是带动画。这使得小部分直觉化思维的人(包括我)认为transform属性是动画属性。 而恰恰相反,transform属性是静态属性,一旦写到style里面,将会直接显示作用,无任何变化过程。transform的主要用途是用来做元素 的特殊变形,对于做设计的人来说并不是很陌生,简单的来说就是css 的图形变形工具。 关于图形变形的基础条件当中的原点设定,在css里面使用的是transform-origin来定义的。这个定义的原点应该是该css作用的元素的左上角为0,0来计算的(有待研究)。其他的属性则根据这个属性来计算进行计算。 关于图形变化的模式,css3标准当中transform-style来定义。默认是flat,展现出来的是简单的效果。而preserve-3d则将空间 呈现为3d模式。从正常的思维来说,应该只需要preserve-3d就好了,但是从谣传“开启了perserve-3d就使用了GPU加速”来说,这个 属性可能是为了降低系统消耗用的,毕竟3d比2d要多一个维度的计算。 具体的给设计师改变元素样式用的属性则有以下五个:
  • translate3d(x,y,z) 是用来控制元素的位置在页面上的三轴的位置的;
  • rotate(deg)是用来控制元素旋转角度的;
  • skew[x,y](deg) 这个属性是用来制作倾斜度的,做过设计的人可能会知道,这个是用来在2d里面创建3d透视图的时候必须的属性;
  • scale3d(x,y,z) 用来放大缩小效果,属性是比值;
matrix3d,css矩阵。通过这个矩阵属性,涵盖了上面所有的属性值,但是个人觉得可读性极差(全都是数字和单位,背起来有点模糊),目前没有理由推荐使用。 总体看来 css transform的属性和原来使用的left ,right ,top, bottom 的属性从动静角度来说没有任何区别,因此使用的时候应该将transform归类到这类定位变形的静态属性里面。 2.Transition transition属性是一个简单的动画属性,非常简单非常容易用。可以说它是animation的简化版本,是给普通做简单网页特效用的。比如你有如下两个样式:
  • .position{ left:100px;
  • top:100px;
  • }
  • .animate{
  • -webkit-transition:left 0.5s ease-out;
  • left:500px;
  • top:500px;
  • }
其中animate的transition的属性的意思说:当你的left属性发生变化的时候,执行动画效果(仅仅基于left的属性变化,其他的属性不会加入到动画变化里面去); 首先你的元素的css为position。当你将其cssList 增加 animate 或者替换position 为animate的时候,元素的属性变化,触发webkit-transition,以指定属性变化前的值为起始值,变化后的属性为结束值,执行动画效 果。这是一个简单的两点变化过程,大大简化了animation属性的复杂程度。 同时,如果在transition的动画当中,属性值有了新的变化,则会中断当前的动画执行,并将中断时的属性值提供给新的动画作为起始值来计算新的动画效果。 我在css编写的时候,因为变化的属性只有transform一个,因此在transtion属性里面指定响应属性为all,可以响应并执行元素所有属性的变化动画(能做动画的属性)。 3.Animation 在官方的Introduction上介绍这个属性是transition属性的扩展。但是这个简单的介绍里面包含了不简单的东西:keyframes。 做过flash动画的人都会知道,flash里面有两个基础武器:时间轴和关键帧。而css keyframes的出现,则是提供了flash世界里面的这两个属性的合集。看一个简单的keyframes的示例:
  • @keyframes ‘wobble’{
  • 0%{
  • left:100px;
  • }
  • 30%{
  • left:300px;
  • }
  • 100%{
  • left:500px;
  • }
  • }
  • .animate{
  • -webkit-animation:wobble 0.5s ease-out;
  • }
上面这个代码展示了一个keyframes ‘wobble’,其中0%代表在变化中不同时间点的属性值,你可以精确的控制动画变化中任何一个时间点的属性效果。而animation则根据这个 keyframes提供的属性变化方式去计算元素动画当中的属性。与transition不同的是,keyframes提供更多的控制,尤其是时间轴的控 制,这点让css animation更加强大,使得flash的部分动画效果可以由css直接控制完成,而这一切,仅仅只需要几行代码,也因此诞生了大量(比起flash 来说算是大量了)基于css的animation tools,用来取代flash的动画部分。

相关 [css3 transform transition] 推荐:

CSS3 中 Transform、 Transition 、Animation 之间的区别与联系

- - CSS库
1.Transform 在部分的test case当中,每每演示transform属性的,看起来好像都是带动画. 这使得小部分直觉化思维的人(包括我)认为transform属性是动画属性. 而恰恰相反,transform属性是静态属性,一旦写到style里面,将会直接显示作用,无任何变化过程. transform的主要用途是用来做元素 的特殊变形,对于做设计的人来说并不是很陌生,简单的来说就是css 的图形变形工具.

“更多|收起”交互中渐进使用transition动画

- - 张鑫旭-鑫空间-鑫生活
本文地址: http://www.zhangxinxu.com/wordpress/?p=2717. 在web页面上,类似于“展开更多”、“显示全部”这类显隐效果,就跟大上海的私家车一样,随处可见. 随便Open两个页面,就可见到影分身:. 一般而言,且平心而论,这类交互效果应当就是这样子的——“唐突的显隐交互”,即内容“啪”一下子呈现或隐藏.

css3 变形

- - 博客园_Ruby's Louvre
CSS3从IE滤镜偷窍过来的创意,但易用性明显提高了许多. 利用这个,我们可以对某个元素进行旋传,缩放,倾斜与位移,并且区分元素类型,无论对块状元素还是内联元素都有效. rotateX(angle) 单独设定 rX 轴的角度. rotateY(angle) 单独设定 rY 轴的角度. rotateZ(angle) 单独设定 rZ 轴的角度.

CSS3 代码生成工具:Create CSS3

- - 我爱水煮鱼
CSS3 具有相当多的新增属性,而且包括阴影、动画、过渡等华丽的效果. 但是由于 CSS3 出来并没有很久,各个浏览器厂商还在开发中,有些属性仍然会带有实验性前缀. 而且类似制作动画、渐变的 CSS3 代码也相当复杂,一旦写错就会导致出现问题. 为此,有人开发了一个生成 CSS3 代码的工具 Create CSS3.

CSS3 文字渐变

- slackware - 前端观察
之前,我们有发表过CSS文字渐变效果,但是其实那并不是纯粹的基于CSS的渐变,它需要一张半透明渐变的png图片. 今天我们将介绍两种使用CSS3实现实现文字的方法. 嗯,只有webkit浏览器支持,请暂时无视其它浏览器. 在《CSS的未来:一些试验性CSS属性》中,我们提到了这个属性,相对于Firefox只能用svg做mask,webkit则灵活很多,图片和css3渐变均可.

用css3写个logo

- 丸子 - 崔凯,前端开发
演示地址:http://uicss.cn/css3/maxthon-logo.html. 先画一个外框 width: 240px; height: 240px;border-radius: 120px;. 填充背景色background:#b1e4ff;. 描边border:2px solid #789cb6;.

CSS3 pointer-events介绍

- Pstrey - 前端观察
其实早知道这个属性,但是一直没有去研究过. 今天正好在twitter看到这个词,就去研究了下,正好解决了目前遇到的一个小难题,所以分享下. 嗯,其实这是个比较简单的CSS3属性. 在某个项目中,很多元素需要定位在一个地图层上面,这里就要用到很多绝对定位或者相对定位的元素,但是这样的话,这些浮在上面的div或者其它元素一般都会给个宽高,或者relative的元素可以不给宽高,这个时候,这些元素就会盖住下面的地图层,以至于地图层无法操作.

Kindle版《The Power of Impossible Thinking: Transform the Business of Your Life and the Life of Your Business》个人成长书籍 限时免费

- Paladin - 什么值得买
作者为美国宾夕法尼亚大学沃顿商学院教授和高级研究员,采用浅显的语言和生动的案例阐明了科学道理,本书深入浅出通俗易懂. 如果把计算机看做是硬件+软件,那么我们的世界则可以看成是外部世界+心智模式,我们成长的过程就是一个不断建模的过程. 有时我们被已经建立起来的模式所束缚,这就是我们所说的思维定式. 本书虽然被归类为商业书籍,但是其阐述的道理可能会让你恍然大悟,“换个角度看问题这根本不是问题”,与众不同的心智模式可以改变你的学业、事业和生活,帮助你从容拥有健康的身心、成功的事业和收放自如的幸福感觉,值得每个人看看.

Terrafugia Transition 空中飞车通过美国交通部有条件认可,离上路更进一步

- S - Engadget 中国版
Terrafugia 的 Transition 空中飞车在取得 FAA(联邦航空总署)以轻型运动飞机的名义准许起飞后,下一步是要取得做为一台车子的上路许可. 在这部份,Transition 和申请飞行许可的时候一样,获得了美国交通部国家高速公路交通安全局(NHTSA)一些额外的豁免,例如准许它为了减轻重量,可以不加装安全气囊、电子行车稳定系统,以及允许它使用聚碳酸酯做为挡风玻璃的材料 -- 因为用上汽车的强化玻璃作为挡风玻璃的话,玻璃在受到鸟击后便会碎裂影响驾驶员视线,所以不适合用在 Transition 上.

HTML5 & CSS3 研究文档

- Kings - 幸福收藏夹
已经说了好久,一直没把这个文件夹分享出来. 这是我去年第四季度里做的,里面有 11 一个文档. 包括 HTML5 中最主要的 JS API 文档,还有 CSS3 中两个比较难的属性. 主要还停留在纯 API 层面上的研究,没有深入到应用中去. 不过,当做工具来使用,和入门文档,还是不错的. 特别是其中的 HTML5 JS API 文档.