美文网首页
【CSS帧动画】便捷实现方式

【CSS帧动画】便捷实现方式

作者: 笑妄v | 来源:发表于2017-03-03 09:43 被阅读0次

    CSS帧动画简便实现

    本文根据慕课网课程总结而成

    JS+CSS3实现“粽情端午

    1.获取DOM对象

    var g =function(id){
            return document.getElementById(id);
        }
    

    此后给元素设id如:

    <div class="c_zongzi" id="c_zongzi"></div>
    

    2.时间轴对象构造器

        var TimeLine = function(){
            this.order = [];//动画序列
            this.add= function(timeout,func,log){
                this.order.push({
                    timeout:timeout,
                    func:func,
                    log:log
                })
            }
            this.start = function(ff){
                for(s in this.order){
                    (function(me){
                        var fn=me.func;
                        var timeout=me.timeout;
                        var log =me.log;
                        Timeout = Math.max(timeout-ff,0);
    
                        setTimeout(fn,timeout);
                        setTimeout(function(){
                            console.log('time->',timeout,'log->',log);
                        })
                    })(this.order[s]);
                }
            }
        }
    

    初始化场景

        var s1 = new TimeLine();
    

    3.设定的class制作动画

    通过变换时间来控制帧动画

    s1.add(1,function(){
            g('c_zongzi_box').className='c_zongzi_box';
            g('text').className='text text_in';
        })
        
    s1.add(100,function(){
            //变换类名
        })
        
    s2.add(3000,function(){
            s3.start();
            //第3秒时s3场景启动
        })
        
    s3.add(5000,function(){
           s3.start();
           //循环s3场景
        });  
    

    4.预加载图片

        var imgs=['img/zzr_2.png','img/zzr_3.png','img/zzr_4.png'];
        var imgs_onload = function(){
            imgs.pop();
            //删除最后的元素并返回
            //即先加载后面的图片
            if(imgs.length == 0){
                s1.start()
            //加载完成后开始动画    
            }
        }
        for(s in imgs){
            var img=new Image;
            img.onload = imgs_onload;
            img.src= imgs[s];
        }
    

    5.轻度元素抖动

    @keyframes rock{
            0%{transform:rorate(0deg)}
            10%{transfrom:rorate(3deg)}
            20%{transform:rorate(-3deg)}
            30%{transform:rotate(2deg)}
            40%{transform:rotate(-2deg)}
            50%{transform:rotate(1deg)}
            60%{transform:rotate(-1deg)}
            70%{transform:rotate(0deg)}
            100%{transform:rotate(0deg)}
    }
    

    相关文章

      网友评论

          本文标题:【CSS帧动画】便捷实现方式

          本文链接:https://www.haomeiwen.com/subject/ofelgttx.html