关于CSS3中动画属性transform和transition以及animation属性的区别分析

这篇文章主要介绍了关于css3动画属性transform和transition以及animation属性的区别分析,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

最近在项目中用到了CSS3中的动画属性。无奈对于css3几个新加的属性不太熟悉,常常容易搞混。所以从网站研究了点资料,总结一下,方便有需要的朋友们可以参考学习。

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要多一个维度的计算。

立即学习“前端免费学习笔记(深入)”;

如果需要使用3d模式,必须先指定style为3d,并在任意父元素上增加 perspective及 perspective-origin 来指定透视点。

具体的给设计师改变元素样式用的属性则有以下五个:

     1、translate3d(x,y,z) 是用来控制元素的位置在页面上的三轴的位置的;
     2、rotate(deg)是用来控制元素旋转角度的;
     3、skew[x,y](deg) 这个属性是用来制作倾斜度的,做过设计的人可能会知道,这个是用来在2d里面创建3d透视图的时候必须的属性;
     4、scale3d(x,y,z) 用来放大缩小效果,属性是比值;
     5、matrix3d,css矩阵。通过这个矩阵属性,涵盖了上面所有的属性值,但是个人觉得可读性极差(全都是数字和单位,背起来有点模糊),目前没有理由推荐使用。

总体看来 css transform的属性和原来使用的left ,right ,top, bottom 的属性从动静角度来说没有任何区别,因此使用的时候应该将transform归类到这类定位变形的静态属性里面。

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,可以响应并执行元素所有属性的变化动画(能做动画的属性)。

Animation
在官方的Introduction上介绍这个属性是transition属性的扩展。但是这个简单的介绍里面包含了不简单的东西:keyframes。

做过Flash动画的人都会知道,Flash里面有两个基础武器:时间轴和关键帧。而css keyframes的出现,则是提供了flash世界里面的这两个属性的合集。看一个简单的 keyframes 的示例:

@keyframes 'wobble'{  0%{   left:100px}   30%{   left:300px;}  100%{   left:500px;}}.animate{ left:100px;   -webkit-animation:wobble 0.5s ease-out;   -webkit-animation-fill-mode:backwards;}

登录后复制

上面这个代码展示了一个keyframes ‘wobble’,其中 0% 代表在变化中不同时间点的属性值,你可以较精确的控制动画变化中任何一个时间点的属性效果。而animation则根据这个keyframes提供的属性变化方式去计算元素动画当中的属性。与 transition 不同的是,keyframes提供更多的控制,尤其是时间轴的控制,这点让css animation更加强大,使得flash的部分动画效果可以由css直接控制完成,而这一切,仅仅只需要几行代码,也因此诞生了大量(比起flash来说算是大量了)基于css的animation tools,用来取代flash的动画部分。关于动画工具,可以参考Web standards-based Animation Tools.

另外在animation属性里面还有一个最重要的就是:animation-fill-mode,这个属性标示是以(from/0%)指定的样式 还是以(to/100%)指定的样式为动画完成之后的样式。这个很方便我们控制动画的结尾样式,保证动画的整体连贯。

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

CSS3中@keyframes动画的实现

关于css属性的选择对动画性能的影响

CSS实现radio和checkbox的 实现效果

以上就是关于CSS3中动画属性transform和transition以及animation属性的区别分析的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2895544.html

(0)
上一篇 2025年3月10日 23:00:13
下一篇 2025年3月5日 19:34:18

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 关于如何解决css3中calc在less编译时被计算的办法

    这篇文章主要介绍了浅谈css3中calc在less编译时被计算的解决办法的相关资料,内容挺不错的,现在分享给大家,也给大家做个参考。 对于前端er来说,Less或Sass已经是一项必备的基本技能,有了这个利器,可以省下前端开发者的很多编码时…

    编程技术 2025年3月10日
    200
  • 利用CSS3的border-radius实现绘制太极及爱心的图案

    css3中的border-radius可以轻松地用来绘制弧线,如果只用来做圆角矩形的话可就太浪费了,下面就来展示一下利用css3的border-radius绘制太极及爱心图案示例,需要的朋友可以参考下 太极图border-radius 除了…

    2025年3月10日 编程技术
    200
  • 如何使用css3做0.5px的细线

    这篇文章主要介绍了使用css3做0.5px的细线的示例代码的相关资料,内容挺不错的,现在分享给大家,也给大家做个参考。 Webapp中的CSS3实现 0.5px的细线 感觉很长时间没写过博客了,最近生活还算稳定,过得较为充实,所以又要开始写…

    2025年3月10日 编程技术
    200
  • CSS3如何实现同时执行倾斜和旋转的动画效果

    这篇文章通过实例代码给大家主要介绍了,如何利用css3实现同时执行倾斜和旋转的动画效果,文中给出了完整的实例代码,大家直接运行就可以看到效果,有需要的朋友们可以参考借鉴,下面来一起看看吧。 先看看静态的效果,运行后的效果更好 示例代码如下 …

    2025年3月10日
    200
  • 利用CSS3实现地球自转

    这篇文章主要介绍了关于利用css3实现地球自转,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 CSS3实现地球自转,不可思议啊,不过确实可以实现,不信的朋友可以祥看本文,附送源码 最终成果: 素材:两张图片, 立即学习“前端…

    2025年3月10日 编程技术
    200
  • 关于CSS3绘制六边形的方法

    下面为大家带来一篇css3绘制六边形的简单实现。内容挺不错的,现在就分享给大家,也给大家做个参考。 因为很简单,所以先总结一下:使用CSS3绘制六边形主要使用伪类:before和:after在源元素之前和之后再绘制两个元素,并利用css3的…

    2025年3月10日 编程技术
    200
  • 关于CSS3制作的20种loading动效

    本篇文章主要介绍了详解纯css3制作的20种loading动效,内容挺不错的,现在分享给大家,也给大家做个参考。 一些网站或者app在加载新东西的时候,往往会有一些好看有趣的loading图,大部分的loading样式都可以使用css3写出…

    2025年3月10日
    200
  • CSS3中的Transition过度与Animation动画属性的使用介绍

    这篇文章主要介绍了css3中的transition过度与animation动画属性使用要点transition和animation能被用来制作基本的页面图片动态效果,当然进一步的控制还是需要javascript的帮助,需要的朋友可以参考下 …

    2025年3月10日
    200
  • 关于css3图片边框border-image的用法

    在css3里引入的很多新特征中,这篇文章主要介绍了css3图片边框border-image的用法,具有一定的参考价值,有兴趣的可以了解一下 对于CSS属性 border ,相信所有的WEB开发人员都非常熟悉。我们可通过设置HTML元素的 b…

    编程技术 2025年3月10日
    200
  • CSS3三维变形实现立体方块

    这篇文章主要给大家介绍了css3利用三维变形实现立体方块的方法,文中给出了完整的实例代码,感兴趣的朋友们可以自己运行后看看效果,只有自己动手了才能更好的学习,下面来一起看看吧。 前言 三维变换使用基于二维变换的相同属性,如果您熟悉二维变换,…

    2025年3月10日
    200

发表回复

登录后才能评论