css3 动画笔记

作者:blue(又名一书and一世界) 我的github
**用途: **当作字典来查

some websites to learn css3Animate

transition

  • grammar: tansition: property duration timing-function delay;
  • detail
    • transition-property:要过渡的css属性
    • transition-duration:要过渡持续多少秒或者毫秒
    • transition-timing-function:速度效果的速度曲线
    • transition-delay:延迟多少秒执行过渡
  • notice
    • 默认值:transition:all 0 ease 0
    • 如果transition-duration属性没有被设置,则默认为0,即不会产生过渡效果
    • tanstion-timing-function: linear/匀速/ | ease-in /加速/ | ease-out /减速/ | ease /逐渐放慢/ | cubic-bezier /函数,自定义速度模式,可以使用 工具网站 这个网站制作/
  • compatibility
    • 目前,各大浏览器(包括IE 10)都已经支持无前缀的transition,所以transition已经可以很安全地不加浏览器前缀。
    • 不是所有的CSS属性都支持transition,完整的列表查看这里,以及具体的效果
    • transition需要明确知道,开始状态和结束状态的具体数值,才能计算出中间状态。比如,height从0px变化到100px,transition可以算出中间状态。但是,transition没法算出0px到auto的中间状态,也就是说,如果开始或结束的设置是height: auto,那么就不会产生动画效果。类似的情况还有,display: none到block,background: url(foo.jpg)到url(bar.jpg)等等。
  • advantage : 简单易用
  • disavantage
    • transition需要事件触发,所以没法在网页加载时自动发生。
    • transition是一次性的,不能重复发生,除非一再触发。
    • transition只能定义开始状态和结束状态,不能定义中间状态,也就是说只有两个状态。
    • 一条transition规则,只能定义一个属性的变化,不能涉及多个属性。

animation

  • grammar: name duration timing-function delay iteration-count direction
  • detail
    • @keyframes:规定动画
    • animation-name:绑定选择器的keyframe名称
    • animation-duration:动画的持续时间,以秒或者毫秒计
    • animation-timing-function:动画的速度曲线
    • animation-delay:延迟多少秒执行动画
    • animation-iteration-count:动画播放次数
    • animation-diretion:是否应该轮流反向播放动画
    • animation-play-state(通常用在js控制是否播放,object.style.animationPlayState):(paused[停止] | running[播放])规定动画正在播放还是暂停
    • animation-fill-mode(通常用在js控制动画效果是否可见,object.style.animationFillMode):(none[不改变默认行为] | forwards[当动画完成后,保持最后一个属性值] | backwards[在animation-delay 所制定的一段时间内,在动画显示之前,应该开始属性值] | both[向前和向后填充模式都被应用])规定动画在播放之前或之后,其动画效果是否可见。
  • compatibility
    • Internet Explorer 10、Firefox 以及 Opera 支持 @keyframes 规则和 animation 属性。Chrome 和 Safari 需要前缀 -webkit-
    • Internet Explorer 9,以及更早的版本,不支持 @keyframe 规则或 animation 属性
  • notice
    • 默认值:animation:none 0 ease 0 1 normal
    • 尽量少在@keyframe里使用除了transform,opacity,filter以外的元素,因为会触发浏览器的重绘(repaint)详情
    • @keyframe
      • 定义:以百分比来规定改变发生的时间,或者通过关键词"from" 和 "to",等价于0%和100%,0%是动画的开始时间,100%是结束时间
      • grammar:@keyframes animationname{ keyframes-selector { css-styles;} }
      • detail
        • animationname:(必需)定义动画名称
        • keyframes-selector:(必需)动画时长的百分比,合法的值:0%-100%(可以使用 from[0%] 和 to[100%])
        • css-styles:(必需)一个或多个合法的css样式属性
      • example

          @keyframes mymove
          {
            0%   {top:0px;}
            25%  {top:200px;}
            50%  {top:100px;}
            75%  {top:200px;}
            100% {top:0px;}
          }
          @-moz-keyframes mymove /* Firefox */
          {
            0%   {top:0px;}
            25%  {top:200px;}
            50%  {top:100px;}
            75%  {top:200px;}
            100% {top:0px;}
          }

          @-webkit-keyframes mymove /* Safari 和 Chrome */
          {
            0%   {top:0px;}
            25%  {top:200px;}
            50%  {top:100px;}
            75%  {top:200px;}
            100% {top:0px;}
          }

          @-o-keyframes mymove /* Opera */
          {
            0%   {top:0px;}
            25%  {top:200px;}
            50%  {top:100px;}
            75%  {top:200px;}
            100% {top:0px;}
          }

  • 如果animation-duration属性没有设置,则时长为0,即动画不会被播放
  • animation-iteration-count默认值为1,可设置为infinite(无限次播放)
  • animation-direction:normal /正常播放/ | alternate /轮流反向播放/
  • advantage :解决了transition过渡效果不能循环播放的弊端
  • disvantage:目前,IE 10和Firefox(>= 16)支持没有前缀的animation,而chrome不支持,所以必须使用webkit前缀。代码必须写成下面这样。

      div:hover {
        -webkit-animation: 1s rainbow;
        animation: 1s rainbow;  
      }

      @-webkit-keyframes rainbow {
        0% { background: #c00; }
        50% { background: orange; }
        100% { background: yellowgreen; }
      }

      @keyframes rainbow {
        0% { background: #c00; }
        50% { background: orange; }
        100% { background: yellowgreen; }
      }

transform

  • grammar:transform:none | transform-functions
  • detail:none and transform-functions
    • none:不定义转换
    • matrix(n,n,n,n,n,n):定义2D转换,使用六个值的矩阵
    • matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n):定义3D转换,使用16个值的4X4矩阵
    • translate(x,y):定义2D转换(参数:x轴移动量,y轴移动量。+即向右移动,-即向左移动。单独一个量时表示x轴移动量与y轴移动量相等)
    • translate3d(x,y,z):定义3D转换(参数基于translate(x,y)扩展)
    • translateX(x):定义转换,只用于X轴的值
    • translateY(y):定义转换,只用于Y轴的值
    • translateZ(z):定义转换,只用于Z轴的值
    • scale(x,y):定义2D缩放转换(参数x,y是倍数)
    • scale(x,y,z):定义3D缩放转换(参数基于scale(x,y)扩展)
    • scaleX(x):设置X轴的值来定义缩放转换
    • scaleY(y):设置Y轴的值来定义缩放转换
    • scaleZ(z):设置Z轴的值来定义缩放转换
    • rotate(angle):定义2D旋转。在参数中规定角度(正是顺时针,负是逆时针)
    • rotate3d(x,y,z,angle):定义3D旋转
    • rotateX(angle):定义沿着X轴的3D旋转
    • rotateY(angle):定义沿着Y轴的3D旋转
    • rotateZ(angle):定义沿着Z轴的3D旋转
    • skew(x-angle,y-angle):定义沿着X和Y轴的2D倾斜转换
    • skew(angle):定义沿着X轴的2D倾斜转换
    • skew(angle):定义沿着Y轴的2D倾斜转换
    • perspective(n):为3D转换元素定义透视视图
  • compatibility
    • Internet Explorer 10、Firefox、Opera 支持 transform 属性
    • Internet Explorer 9 支持替代的 -ms-transform 属性(仅适用于 2D 转换)
    • Safari 和 Chrome 支持替代的 -webkit-transform 属性(3D 和 2D 转换)
    • Opera 只支持 2D 转换
    • Internet Explorer 10 和 Firefox 支持 3D 转换
    • Chrome 和 Safari 需要前缀 -webkit-
    • Opera 仍然不支持 3D 转换(它只支持 2D 转换)
  • notice
    • transform-origin可以定义改变被转换元素的位置
      • grammar:transform-origin:x-axis,y-axis,z-zxis
      • 默认值:transform-origin:50% 50% 0
      • detail
        • x-axis | y-axis:定义视图被置于X轴的何处。可能的值:left | center | right | length | %
        • z-axis:定义视图被置于Z轴的何处。可能的值:length
      • compatibility
        • Internet Explorer 10、Firefox、Opera 支持 transform-origin 属性
        • Internet Explorer 9 支持替代的 -ms-transform-origin 属性(仅适用于 2D 转换)
        • Safari 和 Chrome 支持替代的 -webkit-transform-origin 属性(3D 和 2D 转换)
        • Opera 只支持 2D 转换
    • transform-style规定如何在3D空间中呈现被嵌套的元素
      • grammar:transform-style:flat | preserve-3d
      • tranform-style默认值:transform-style:flat
      • compatibility
        • Firefox 支持 transform-style 属性
        • Chrome、Safari 和 Opera 支持替代的 -webkit-transform-style 属性
    • perspective定义3D元素距视图的距离,以像素计。
      • grammar:perspective number | none
      • perspective默认值:perspective:none
      • detail
        • 当为元素定义 perspective 属性时,其子元素会获得透视效果,而不是元素本身
        • perspective 属性只影响 3D 转换元素
        • 通常和perspective-origin属性配合改变3D元素的底部位置
      • compatibility
        • 目前浏览器都不支持 perspective 属性
        • Chrome 和 Safari 支持替代的 -webkit-perspective 属性
    • perspective-origin定义 3D 元素所基于的 X 轴和 Y 轴。该属性允许您改变 3D 元素的底部位置
      • grammar:perspective-origin:x-axis,y-axis
      • perspective-origin默认值:perspective-origin:50% 50%
      • detail
        • 当为元素定义 perspective-origin 属性时,其子元素会获得透视效果,而不是元素本身
        • 该属性必须与 perspective 属性一同使用,而且只影响 3D 转换元素
      • compatibility
        • 目前浏览器都不支持 perspective-origin 属性
        • Chrome 和 Safari 支持替代的 -webkit-perspecitve-origin 属性
    • backface-visibility定义当元素不面向屏幕时是否可见
      • grammar:backface-visibility: visible | hidden
      • backface-visibility默认值:backface-visibility:visible
      • detail
        • 如果在旋转元素不希望看到其背面时,该属性很有用
      • compatility
        • 只有 Internet Explorer 10+ 和 Firefox 支持 backface-visibility 属性
        • Opera 15+、Safari 和 Chrome 支持替代的 -webkit-backface-visibility 属性

下一篇文章预告: chrome dev tools 简介

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270

推荐阅读更多精彩内容

  • 看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印象,因...
    DCbryant阅读 1,811评论 0 4
  • 1、属性选择器:id选择器 # 通过id 来选择类名选择器 . 通过类名来选择属性选择器 ...
    Yuann阅读 1,524评论 0 7
  • 2D、3D变形动画 transform:2D变形:复合属性 通过 CSS3 转换,我们能够对元素进行移动、缩放、转...
    Zd_silent阅读 357评论 0 0
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    love2013阅读 2,279评论 0 11
  • Kotlin 可以说让安卓开发插上了翅膀,可以使用诸多优秀的函数式语法(java8才带) 简化了安卓开发的代码量。...
    上重楼阅读 1,038评论 0 0