持续动画的前端实现

前端实现持续动画有两种方式:

  1. css实现持续动画。
  2. JavaScript代码实现。

先来说第一种css:
css3是在原有的css的基础上增加了些新的特性,其中就包含animation。css实现持续动画就是使用了animation这个属性。
主要代码如下:

   div {
	    width:100px;
	    height:100px;
	    background:red;
	    position:relative;
	    animation:mymove 5s infinite;
	    -webkit-animation:mymove 5s infinite; /*Safari and Chrome*/
    }
    
    @keyframes mymove
    {
    from {left:0px;}
    to {left:200px;}
    }
    
    @-webkit-keyframes mymove /*Safari and Chrome*/
    {
    from {left:0px;}
    to {left:200px;}
    }

注意问题:要考虑到兼容浏览器。
animation-name 规定需要绑定到选择器的 keyframe 名称。。
animation-duration 规定完成动画所花费的时间,以秒或毫秒计。
animation-timing-function 规定动画的速度曲线。
animation-delay 规定在动画开始之前的延迟。
animation-iteration-count 规定动画应该播放的次数。
animation-direction 规定是否应该轮流反向播放动画。
使用时的语法:
animation: name duration timing-function delay iteration-count direction;
接下来说第二种:
想起要写这些持续的问题,我们第一个想到的应该时setTimeOut方法吧 ,今天说一个其他的方法

window.requestAnimFrame = (function(){
  return  window.requestAnimationFrame       ||
          window.webkitRequestAnimationFrame ||
          window.mozRequestAnimationFrame    ||
          function(callback){
            window.setTimeout(callback, 1000 / 60);
          };
})();

var e = document.getElementById("e");
var flag = true;
var left = 0;

function render() {
    left == 0 ? flag = true : left == 100 ? flag = false : '';
    flag ? e.style.left = ` ${left++}px` :
        e.style.left = ` ${left--}px`;
}

(function animloop() {
    render();
    requestAnimFrame(animloop);
})();

requestAnimationFrame()函数就是针对动画效果的API,在浏览器端,用在DOM上的风格变化或画布动画或WebGL中。浏览器现在基本都支持这个方法。
此方法相对于setTimeOut()的优势则是:浏览器可以优化并行的动画动作,更合理的重新排列动作序列,并把能够合并的动作放在一个渲染周期内完成,从而呈现出更流畅的动画效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值