zoukankan      html  css  js  c++  java
  • 缓动函数封装 详见



    function animate(element,strrs,fn){
    // 判断是否开启定时器 如果有清空定时器
    if(element.timeId){
    clearInterval(element.timeId);
    }
    // 开启定时器
    element.timeId =setInterval(function(){
    //设置标记记录是否都达到目标
    var flag =true;
    //遍历对象的数组 改变元素的属性值
    for(var strr in strrs ){
    //判断属性是否为zIndex
    if(strr ==="zIndex"){
    element.style.zIndex = strrs[strr];
    }else if(strr ==="opacity"){
    //判断属性是否为opacity
    //获取当前opacity的属性值 转化为number并检测能力
    var current=parseFloat(getStyle(element,strr))||0;
    current*=100;
    //让当前值乘100保证是个整数
    //定义步长为目标-当前值的10分之1 步长会越来越小 当不为整数时要取整
    var step =(strrs[strr]*100-current)/10;
    step = step>0?Math.ceil(step):Math.floor(step);
    //改变属性值
    current+=step;
    element.style[strr]= current/100;
    //兼容ie8
    element.style.filter="alpha(opacity="+current+")";
    if(step!==0){//判断是否已到达目标
    flag =false;
    }

    }else{
    //获取当前属性的属性值 转化为number并检测能力
    var current=parseInt(getStyle(element,strr))||0;
    //定义步长为目标-当前值的10分之1 步长会越来越小 当不为整数时要取整
    var step =(strrs[strr]-current)/10;
    step = step>0?Math.ceil(step):Math.floor(step);
    //改变属性值
    current+=step;
    element.style[strr]= current + "px";
    if(step!==0){//判断是否已到达目标
    flag =false;
    }
    }

    }
    if(flag){//判断是否都已到达目标 达到则清除计时器
    clearInterval(element.timeId);
    if(fn){//判断是否有回调函数 有则调用
    fn();
    }
    }

    },20)
    }
  • 相关阅读:
    鸡哥的限币令(有上下限的网络流/费用流问题)
    AtCoder Regular Contest 128 部分题题解
    一道题
    2021CCPC河南省赛
    10.26训练赛
    博弈论和SG函数
    10.24训练赛
    10.22训练赛
    CF #749
    atcoder ABC233
  • 原文地址:https://www.cnblogs.com/wjl3898/p/5771383.html
Copyright © 2011-2022 走看看