html5与css3权威指南--读书笔记---css3中的动画功能

1.css3中的动画功能分为transition(变换)、transform(变形)和animation(动画)功能,都是通过改变css中的属性值来产生动画效果的

2.transition:支持从一个属性值平稳过渡到另一个属性值 

支持的浏览器版本 firefox 4.0+ opera 10.5+ safari 3.1+ chrome 2.0+
书写方式 -moz-transition -o-transition -webkit-transition  -webkit-transition

  2.1 transition的定义

    transition: property duration timing-function delay

    property:所针对的属性

    duration:多长时间完成property属性值的平滑过渡

    time-function:通过什么方法进行平滑过渡,

    delay:改变过元素属性值后多长时间才开始执行transition效果,默认大小是"0",即变换立即执行,没有延迟。

  2.2 实例:当鼠标放置在背景色为黄色的div上,2s内div的背景色逐渐过渡到浅蓝色,宽度减小一般,字体颜色由黑色变为绯红色  

<style type="text/css">

    div{

        line-height:30px;

        background:#FF9;

        width:600px;

    }

    div:hover{

        -moz-transition:background-color 2s linear,color 2s linear,width 2s linear;

        /*火狐浏览器*/

        -o-transition:background-color 2s linear,color 2s linear,width 2s linear;

        /*opera浏览器*/

        -webkit-transition:background-color 2s linear,color 2s linear,width 2s linear;

        /*chrome浏览器*/

        /*可以同时设置多个属性值,用逗号分隔*/

        background:#99F;

        color:#F36;

        width:300px;

    }

</style>
<body>

<div>asasas</div>

</body>

  2.3 timing-function的值

  ease:逐渐变慢,默认值./linear:匀速/ease-in:加速/ease-out:减速/ease-in-out:加速然后减速/cubic-bezier:该值允许你去自定义一个时间曲线

  其中p0和p3的坐标已经确定为(0,0),(1,1),所以cubic-bezier(x1,y1, x2, y2),其中p1(x1,y1),p2(x2,y2),,通过改变P1(x1, y1)和P2(x2, y2)的坐标可以改变整个过程的Output Percentage(摘自http://www.w3cplus.com/content/css3-transition)

html5与css3权威指南--读书笔记---css3中的动画功能

3,transform-----2D转换(默认都是以元素的中心为基准点的)

  对元素进行移动、缩放、转动、拉长或拉伸

支持的浏览器版本 firefox 3.5+ opera 10.5+ safari 3.1+ chrome 2.0+ IE9.0
书写方式 -moz-transform -o-transform -webkit-transform  -webkit-transform -ms-transform

  

translate(10px,10px):向右移动10像素,向下移动10像素

div{

  transform: translate(10px,10px);

  -ms-transform: translate(10px,10px);        /* IE 9 */

  -webkit-transform: translate(10px,10px);    /* Safari and Chrome */

  -o-transform: translate(10px,10px);        /* Opera */

  -moz-transform: translate(10px,10px);        /* Firefox */

}

rotate(30deg):元素顺时针旋转30度。负值,元素将逆时针旋转,以元素的中心(如矩形对角线的交叉点)为圆心进行旋转

div{

    transform: rotate(30deg);

    -ms-transform: rotate(30deg);        /* IE 9 */

    -webkit-transform: rotate(30deg);    /* Safari and Chrome */

    -o-transform: rotate(30deg);        /* Opera */

    -moz-transform: rotate(30deg);        /* Firefox */

}

deg度是css3中角度单位,一个圆有360度,其中90deg = 100grad = 0.25turn ≈ 1.570796326794897rad,支持deg的浏览器

类型 IE Firefox Safari Chrome Opera
版本 9+ 4+ 5.1.7 13 11.5

 

scale(2,2) :缩放,把宽度转换为原始尺寸的 2 倍,把高度转换为原始高度的 2 倍。可以为小数,指缩小为原来的多少倍,仍然是以元素的中心为基点进行缩放

div{

    transform: scale(2,2);

    -ms-transform: scale(2,2);    /* IE 9 */

    -webkit-transform: scale(2,2);    /* Safari 和 Chrome */

    -o-transform: scale(2,2);    /* Opera */

    -moz-transform: scale(2,2);    /* Firefox */

}

skew(30deg,20deg) :实现文字或图像的倾斜效果,指定水平方向上的倾斜角度与垂直方向上的倾斜角度。

 div {

       -webkit-transform: skew(30deg, 30deg); /* Chrome || Safari */

       -moz-transform: skew(30deg, 30deg);       /* Firefox */

        -ms-transform: skew(30deg, 30deg);        /* IE */

        -o-transform: skew(30deg, 30deg);         /*Opera */

    }        

matrix():把所有 2D 转换方法组合在一起,允许您:旋转、缩放、移动以及倾斜元素,共六个参数(m11,m12,m21,m22,dx,dy),具体操作见我的《html5--canvas---绘制坐标变换(以矩形为例)

补充:transform-origin:改变变形的基准点,x轴 y轴 z轴,默认值是50% 50% 0,可能的值是left/center/right/length/%   top/center/bottom/length%   length

4,Animations支持通过关键帧的指定来在页面上产生复杂的动画效果。

  animation与transition的功能相同,区别:transition只能通过指定属性的开始值和结束值,然后在这两个值之间进行平滑的过渡来实现动画效果;animation可以通过定义多  个关键帧以及定义每个关键帧中元素的属性来实现复杂的动画效果

  浏览器支持情况:IE10;Firefox 需要前缀 -moz-;Chrome 和 Safari 需要前缀 -webkit-;Opera 需要前缀 -o-。

  4,1 定义关键帧

@-moz-keyframes name{

            0%{

                opacity:0;

                background-color:#3FF;

                -moz-transform:rotate(30deg);

            }

            40%{

                opacity:0.4;

                background-color:#C33;

                -moz-transform:rotate(80deg);

            }

            70%{

                opacity:0.7;

                background-color:#969;

                -moz-transform:rotate(180deg);

            }

            100%{

                opacity:1.0;/*淡入淡出效果*/

                background-color:#C0F;

                -moz-transform:rotate(360deg);

            }

        }

        div:hover{

            -moz-animation-name:name;/*指定动画的名称*/

            -moz-animation-duration:5s;/*指定动画持续的时间*/

            -moz-animation-time-function:linear;/*指定动画实现的方式*/
       -moz-animation-delay:10s;/*指定动画延迟时间*/
       -moz-animation-direction:normal;/*指定动画播放方向;normal:每次循环都是向前播放;alternate:动画播放在第偶数次向前播放,第奇数次向反方向播放。*/
-moz-animation-iteration-count:infinite/*指定动画播放的次数n,其中infinite是无限次循环播放,默认为1次*/
       -moz-animation-play-state:running/paused/*设定动画播放的状态,paused为暂停,running为播放*/
       animation:name duration time-function delay direction iteration-count;/*也可以将所有值写在一起,但不可以写 play-state*/
animation:name 5s linear 10s alterate infinite;/*也可以将所有值写在一起,但不可以写 play-state*/ }

 

你可能感兴趣的:(html5)