zoukankan      html  css  js  c++  java
  • animation与transition的简单讲述

    CSS动画分为两大组成部分:transition和animation

    在CSS 3引入Transition(过渡)这个概念之前,CSS是没有时间轴的。也就是说,所有的状态变化,都是即时完成。

    transition的使用注意

    (1)目前,各大浏览器(包括IE 10)都已经支持无前缀的transition,所以transition已经可以很安全地不加浏览器前缀。

    (2)不是所有的CSS属性都支持transition。

    (3)transition需要明确知道,开始状态和结束状态的具体数值,才能计算出中间状态。比如,height从0px变化到100px,transition可以算出中间状态。但是,transition没法算出0px到auto的中间状态,也就是说,如果开始或结束的设置是height: auto,那么就不会产生动画效果。类似的情况还有,display: none到block,background: url(foo.jpg)到url(bar.jpg)等等。

    transition的局限

    transition的优点在于简单易用,但是它有几个很大的局限。

    (1)transition需要事件触发,所以没法在网页加载时自动发生。

    (2)transition是一次性的,不能重复发生,除非一再触发。

    (3)transition只能定义开始状态和结束状态,不能定义中间状态,也就是说只有两个状态。

    (4)一条transition规则,只能定义一个属性的变化,不能涉及多个属性。

      CSS Animation就是为了解决这些问题而提出的。

    首先,CSS Animation需要指定动画一个周期持续的时间,以及动画效果的名称。

    代码如下:

    div:hover {
      animation: 1s rainbow;
    }
    @keyframes rainbow {
      from { background: #c00 }
      50% { background: orange }
      to { background: yellowgreen }
    }
    keyframes关键字用来定义动画的各个状态,它的写法相当自由。

    同transition一样,animation也是一个简写形式。
    animation: 1s 1s rainbow linear 3 forwards normal;

    这是一个简写形式,可以分解成各个单独的属性。
    div:hover {
      animation-name: rainbow;
      animation-duration: 1s;
      animation-timing-function: linear;
      animation-delay: 1s;
        animation-fill-mode:forwards;
      animation-direction: normal;
      animation-iteration-count: 3;
    }

    目前,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; }
    }
  • 相关阅读:
    spring项目(springmvc)(多模块/单模块)maven打包引入第三方jar方式,使用scope:system配置systemPath编译,不用添加到本地仓库!
    Mysql 执行效率 性能综合贴
    前端Js框架 UI框架汇总 特性 适用范围 选择
    通用 正则表达式 C# (.NET)Regex 总结
    VSCode Node cannot launch program setting the 'outFiles' attribute might help
    CSS常见问题,定位技巧总结
    java 欢迎页 主页 设置为servlet的方法
    MSSQL Server 及 MSSQL Express版本 自动备份
    SQL Server 2008 R2 安装 下载
    mysql 日期计算集合
  • 原文地址:https://www.cnblogs.com/ylyw/p/7692856.html
Copyright © 2011-2022 走看看