kobe

快乐工作:前端;健康生活:篮球;爱笑笑

利用css3属性:transition-duration来做简单的动画

transition-duration是属于css3的属性,用来指定对象过渡的持续时间。

为了兼容不同的浏览器,需要加上相应的前缀,有以下几种写法,我们设定持续时间为3秒:

selector{
-webkit-transition-duration: 3s;
-moz-transition-duration: 3s;
-o-transition-duration: 3s;
-ms-transition-duration: 3s;
transition-duration: 3s;
}
这个属性怎么用来制作动画呢?既然是动画, 肯定有个初始状态和结束状态,那么我们只需要指定这两个状态就可以了。

首先,我们来做一个简单的移动。

放一个黄色的div在页面中,为了方便其移动,id为“test1”,设置其position为absolute,初始left值为0即起始的距离,当然最重要的transition-duration属性不要忘记咯,css如下:

div {
width:300px;
height:200px;
position:absolute;
left:0;
background:yellow;
-webkit-transition-duration: 3s;
-moz-transition-duration: 3s;
-o-transition-duration: 3s;
-ms-transition-duration: 3s;
transition-duration: 3s;
}
然后只需要在页面中,插入一段对left赋值的脚本就可以了,即对终点left赋值,使其移动到left:300px的位置,脚本如下:

var test1 = document.getElementById('test1');
test1.style.left='300px';
ok,这样就实现了简单的水平移动。

接下来,我们还可以用css3中的transfrom来做一些其他的动画,比如鼠标hover的时候,div倾斜到某个角度。

代码如下:

<!DOCTYPE html>
<html scrollbar="no">
<head>
    <title>transtion demo</title>
    
    <style type="text/css">
        .animate {
            width: 300px;
            height: 200px;
            position: absolute;
            text-align: center;
        }

        .test1 {
            background: yellow;
            -webkit-transition-duration: 3s;
        }
        .test2 {
            top: 400px;
            background: green;
            -webkit-transform: rotate(20deg);
            -moz-transform: rotate(20deg);
            -o-transform: rotate(20deg);
            -ms-transform: rotate(20deg);
            transform: rotate(20deg);
            -webkit-transition-duration: 3s;
        }
        .test3 {
            top: 800px;
            background: #000;            
            -webkit-transition-duration: 3s;
        }
        .test3:hover {
            -webkit-transform: rotate(20deg);
            -moz-transform: rotate(20deg);
            -o-transform: rotate(20deg);
            -ms-transform: rotate(20deg);
            transform: rotate(20deg);
        }
    </style>
</head>
<body>
    	<div class="animate test1" id="test1">test1</div>
    	<div class="animate test2" id="test2">test2</div>
        <div class="animate test3" id="test3">test3</div>
    <script type="text/javascript">
        var a = document.getElementById('test1');
        a.style.left = '300px';
        var b = document.getElementById('test2');
        b.style.WebkitTransform = 'rotate(40deg)';
        // a.style['-webkit-transition-duration'] = '3s';
        // a.style['transition-duration'] = '3s';
    </script>
</body>
</html>


最后,有个需要注意的是,如果通过javascript来设置transition-duration,原生的javascript可以这样用:

element.style['-webkit-transition-duration'] = '3s';
这个只是很简单的一个应用,如果要用这个属性来做更多的应用,还需要自己再研究,看看别人的demo



posted @ 2013-01-08 19:06  胡涛儿  阅读(710)  评论(0编辑  收藏  举报