zoukankan      html  css  js  c++  java
  • 变速动画函数封装增加任意多个属性、透明度和层级

    //计算后的样式属性---- 一个元素的任意的一个样式属性值
    function getStyle(element,attr) {
    //判断这个浏览器是否支持这个方法
    return window.getComputedStyle?window.getComputedStyle(element,null)[attr]:element.currentStyle[attr];
    }
    //匀速动画
    function animate(element,json,fn) { //element--元素 attr--属性名字 target--目标位置
    //清理定时器
    clearInterval(element.timeId);
    element.timeId=setInterval(function () {
    var flag=true;//默认,假设,全部到达目标
    for(var attr in json){
    //判断这个属性中attr中是不是opacity
    if (attr=="opacity"){
    //获取元素的当前的透明度,当前的透明度放大100倍
    var current=getStyle(element,attr)*100;
    //目标的透明度放大100倍
    var target=json[attr]*100;
    var step=(target-current)/10;
    step=step>0?Math.ceil(step):Math.floor(step);
    current+=step;
    element.style[attr]=current/100;
    }else if(attr=="zIndex"){ //判断这个属性attr中是不是zIndex
    //层级改变就是直接改变这个属性的值
    element.style[attr]=json[attr];
    }else {
    //获取元素当前位置
    var current=parseInt(getStyle(element,attr));//数字类型
    //当前的属性对应的目标值
    var target=json[attr];
    //移动的步数
    var step=(target-current)/10;
    step=step>0?Math.ceil(step):Math.floor(step);
    current+=step;
    element.style[attr]=current+"px";
    }
    //判断是否到达目标
    if(current!=target){
    flag=false;
    }
    }
    if(flag){
    //清理计时器
    clearInterval(element.timeId);
    //回调函数,所有属性达到目标后才能使用
    if(fn){
    fn();
    }
    }
  • 相关阅读:
    王建军_百度百科
    腾讯研究院关于研究院
    创业公司3Gear Systems利用Kinect打造未来人机交互体验 | 36氪
    KVM切换器_互动百科
    保荐人考试
    Engadget 中文版征人启事 《 they're hiring
    吸血僵尸惊情四百年
    小霸王手机
    ARM、高通、德州仪器这三家芯片企业该怎么区分和评价?
    《美丽心灵》兼谈纳什均衡理论
  • 原文地址:https://www.cnblogs.com/lujieting/p/10055298.html
Copyright © 2011-2022 走看看