• 延时动画四部曲


    onCreate: function() {
            this.setView("leftMenu.html", {
                items : []
            });
            me.threeTrigger = iAuto.Util.bind(me,me.threeTrigger);
        },
    ... ...
    releaseBtn : function(event){
            var me = this;
            setTimeout(me.threeTrigger(event),700);
        },
        threeTrigger : function(event){
            var me = this,$el = me.$element;
            return function()  
            {  
                me.returnTrigger(event);  
            }
        },
        returnTrigger : function(event){ 
            var me = this,$el = me.$element;
    
            var klass = $(event.target).data("klass");   
            $el.find("."+klass).removeClass("pressed");
            $el.trigger(klass);
        },

    用setTimeout做延时会丢失上下文,所以首先绑了this,

    然后这家伙还不能带参数,那么需要再写个函数,该函数返回一个不带参数的函数,详细转自

    http://boleyn.iteye.com/blog/1144015

    参看

    http://blog.csdn.net/huanglan513/article/details/5669912

     动画方面我采用的时给after加上帧动画:

    .left_menu .bigSize:after {
      content: "";
      position: absolute;
      top: 8px;
      left: 40px;
       45px;
      height: 45px;
      display: block;
      z-index: -1;
      border-radius: 45px;
      opacity: 0;
      background-color: #373737;
    }
    
    .left_menu .bigSize:hover:after {
      -webkit-animation: boom 0.7s ease;
    }
    
    @-webkit-keyframes boom {
      0% {
        opacity: 0;
      }
    
      5% {
        -webkit-transform: scale(1.2);
        opacity: 0.5;
      }
    
      70% {
        -webkit-transform: scale(1.6);
        opacity: 0.8;
      }
    
      100% {
        -webkit-transform: scale(2.4);
        opacity: 1;
         353px;
        height: 66px;
        display: block;
      }
    }
    drop

    动画的质感需要物理基础,有空深入研究。

    另外,为了防止连续点击产生动画之后setTimeout不能对应动画完成的事件,可以采用监听css3动画完成的事件,再执行要做的事。

    <!DOCTYPE HTML> 
    <html> 
    <head> 
    <meta charset="utf-8"> 
    <meta name="author" content="@my_programmer"> 
    <title>webkitAnimationEnd</title> 
    <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/> 
    <meta name="apple-mobile-web-app-capable" content="yes" /> 
    <meta name="format-detection" content="telephone=no"/> 
    <style type="text/css"> 
    #div{ 
    200px; 
    height:200px; 
    background:#f60; 
    margin:100px auto; 
    -webkit-transition: all ease 1s; 
    } 
    .change{ 
    -webkit-animation: transform 1s 2 ease; 
    } 
    @-webkit-keyframes transform { 
    10% { -webkit-transform: scale(1)} 
    20% { -webkit-transform: scale(2)} 
    50%{ -webkit-transform: scale(0.5)} 
    100% { -webkit-transform: scale(1)} 
    } 
    </style> 
    </head> 
    <body> 
    <div id="div"></div> 
    <script type="text/javascript"> 
    var tt = document.querySelector('#div'); 
    tt.addEventListener("click", function(){ 
    this.className = 'change'; 
    }, false); 
    tt.addEventListener("webkitAnimationEnd", function(){ //动画结束时事件 
    this.className = this.className.replace('change', ' '); 
    console.log(2); 
    }, false); 
    </script> 
    </body> 
    </html> 
    webkitAnimationEnd

    对按钮按压效果这类简单动画的回调尤其有效。

  • 相关阅读:
    7-22 朋友圈(25 分)
    c++之函数重载
    c++之函数的其它用法
    c++之引用
    c++之内存模型
    c++实例之通讯录管理系统之清空联系人功能(七)
    c++实例之通讯录管理系统之修改联系人功能(六)
    c++实例之通讯录管理系统之查找联系人功能(五)
    c++实例之通讯录管理系统之删除联系人功能(四)
    c++实例之通讯录管理系统之显示联系人功能(三)
  • 原文地址:https://www.cnblogs.com/haimingpro/p/4201406.html
Copyright © 2020-2023  润新知