实现动画的各种方式

前提条件,要让元素左右上下移动位置,首页就需要设置position属性,值为absolute,fixed,relative皆可

一、css

(1)animation

        首先需要给要移动的元素设置animation属性:在这个里面设置名称以及移动时间,如果时间不写会默认为0。

    接下来需要@keyframes name(刚刚设置的名称)在这个里面就可以设置你需要实现的效果,

form {    多个属性分号隔开  } to{        }

或者 写成百分比的格式

0%{    }  20%{    }   40%{    } 

animation属性相当于一个总的属性,可以细分为各个,详情如下

@keyframes        规定动画。    

animation            所有动画属性的简写属性,除了 animation-play-state 属性。 

animation-name    规定 @keyframes 动画的名称。 

animation-duration规定动画完成一个周期所花费的秒或毫秒。 

animation-timing-function        规定动画的速度曲线。默认是 "ease"。 

animation-delay        规定动画何时开始。 

animation-iteration-count    规定动画被播放的次数。 

animation-direction        规定动画是否在下一周期逆向地播放。 

animation-play-state        规定动画是否正在运行或暂停。 

animation-fill-mode        规定对象动画时间之外的状态。 

注:要兼容各个浏览器,需要加入不同的前缀

@-moz-keyframes name/* Firefox */

@-webkit-keyframes name/* Safari 和 Chrome */

@-o-keyframes name/* Opera */

代码如下:

.demo {

    position:absolute;

    width:300px;

    height:20px;

    border:1px solid #00c892;

    animation:myfirst 3s;

}

@keyframes myfirst {

    /*from {background: red; left: 20px;}*/

    /*to {background: yellow; left: 300px;}*/

    0% {background:black;left:10px}

    20%{background:red;left:20px;}

    40%{background:yellow;left:40px;top:30px}

    80%{background:#5DADF1;left:90px}

}

(2)transition

transition:all 2s linear;

div:hover{

    background:yellow;

    transform:rotate(360deg);

    width:800px;

    height:300px;

}


transition                            简写属性,用于在一个属性中设置四个过渡属性。 

transition-property             规定应用过渡的 CSS 属性的名称。 

transition-duration               定义过渡效果花费的时间。默认是 0。 

transition-timing-function    规定过渡效果的时间曲线。默认是 "ease"。 

transition-delay                    规定过渡效果何时开始。 

注:浏览器需要兼容各个浏览器,前缀同上

二、用计时器实现动画

主要是注意setInterval里面的this指向,可以用bind(this)解决

window.onload =function() {

    var oDiv1 =document.getElementById("demo");

    oDiv1.onclick =function () {

    var timer =setInterval(function () {

        this.style.width =this.offsetWidth -10 +"px";

        if (this.offsetWidth ==10) {

            clearInterval(timer);

        }

    }.bind(this),1000)

}

}

三、利用API   requestAnimationFrame

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    love2013阅读 2,350评论 0 11
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    wzhiq896阅读 1,821评论 0 2
  • gradient <gradient> 是一种 CSS数据类型的子类型,用于表现两种或多种颜色的过渡转变。<gra...
    DHFE阅读 945评论 0 1
  • 变形--旋转 rotate() 旋转rotate()函数通过指定的角度参数使元素相对原点进行旋转。它主要在二维空间...
    阿振_sc阅读 948评论 1 5
  • 1.CSS3 边框 border-radius CSS属性用来设置边框圆角。当使用一个半径时确定一个圆形;当使用两...
    garble阅读 696评论 0 0