zoukankan      html  css  js  c++  java
  • js运动框架

    参照网上写了一个运动框架

    支持对象的width,height,left,top...,透明度动画效果

      // 对一个对象的多个属性实现动画
      function animate(obj,json,fun){
        clearInterval(obj.timer);
    
        var fre = json['frequence'] || 10;  //给对象添加添加一个频率 ,默认10
        delete json['frequence'];  //用完即删,因为其并不是需要加动画的属性
        obj.timer = setInterval(function(){
            // 遍历json格式对象
            var flag = true; //用来判断是否停止定时器
            for(var attr in json){
                // 判断属性是否是透明度,取值范围不同
                var curStyle = 0;
               if(attr == "opacity"){
                    curStyle = parseInt(getStyle(obj,attr))*100;    
               }else{
                    curStyle = parseInt(getStyle(obj,attr));    //必须用parseInt(),否则有bug抖动
               }
                var tarStyle = parseInt(json[attr]);
    
                var step = (tarStyle - curStyle) / fre; //步长/速度
                step = step > 0 ? Math.ceil(step) : Math.floor(step);   //step最终都会等于0
    
                // 判断属性是否是透明度
                if(attr == "opacity"){
                    obj.style[attr] = (curStyle + step)/100;
                    obj.style.filter = "alpha(opacity = "+ (curStyle + step) +")";
                }else if(attr == "zIndex"){
                    obj.style.zIndex = tarStyle;
                }else{
                    
                    obj.style[attr] = curStyle + step + "px";
                }
               
                // 如果有一个动画没有执行完,就不能停止定时器
                if(curStyle != json[attr]){
                    flag = false;
                }
            }
    
            if(flag){
                clearInterval(obj.timer);
                if(fun){
                    fun();  //执行回调函数
                }
                
            }
    
        },16);
    }
    
    // 获取元素样式
    function getStyle(obj,attr){
        if(obj.currentStyle){
            return obj.currentStyle[attr];  //ie8及以下
        }else{
            return window.getComputedStyle(obj,null)[attr]; //非ie8及以下
        }
    }

    支持的参数,

    obj:对象

    json:json格式的对象,用于传递多个要设置动画的属性

    fun:动画执行完,要执行的回调函数,可不写

  • 相关阅读:
    edge.js架起node.js和.net互操作桥梁
    Swift学习:闭包(Closures)
    swift UIAlertController教程
    linux配置IP的方法
    centos 6.5安装vncserver 并开启远程桌面
    CSS中各种居中方法
    jquery中的index方法和eq方法
    line-height的用法(一)
    第八章—BOM(一)
    第四章—变量,作用域和内存问题(一)
  • 原文地址:https://www.cnblogs.com/Ryan777/p/10524830.html
Copyright © 2011-2022 走看看