在浏览器上运行的时候透明度这个功能老是出错,提示说无法运用currentStyle 是浏览器的原因吗

来源:5-1 JS链式动画

bluesy

2016-01-05 16:18

function getStyle(obj,attr){

    if(obj.currentStyle){

    return obj.currentStyle[attr]; //IE浏览器

}

else{

    return getComputedStyle(obj,false)[attr];//火狐浏览器

}

}


写回答 关注

2回答

  • CORTANA343
    2016-01-05 21:25:31
    已采纳

    如果变宽和变高都可以实现的话,有可能是透明度改变的那一部分代码写错了,或者是你用的浏览器不兼容吧;

    ie,edge,opera应该都是用的currentstyle,其他的用的都是getcomputedstyle

    bluesy

    啊啊啊啊!不好意思啊,是我自己的失误,逗号打成点了。还是要谢谢你啊,感谢

    2016-01-06 08:47:07

    共 2 条回复 >

  • bluesy
    2016-01-06 08:40:08

    宽和高都能实现,就是透明度有问题呀,麻烦你帮我看看是什么地方出问题了,谢谢

    function getStyle(obj,attr){

    if(obj.currentStyle){

    return obj.currentStyle[attr]; //IE浏览器

    }

    else{

    return getComputedStyle(obj,false)[attr];//火狐浏览器

    }

    }

    function startMove(obj,attr,target,fn){//(fn是一个为回调函数)

    clearInterval(obj.timer);

    obj.timer=setInterval(function(){

    //1.取当前的值

    var icur = 0;

    if(attr == 'opacity'){

    /*是否为透明度的判断*/

    icur = Math.round(parseFloat(getStyle(obj.attr))*100);

    }

    else{

    icur=parseInt(getStyle(obj,attr));

    }

    //2.算速度

    var speed =(target-icur)/8;

    speed = speed > 0?Math.ceil(speed):Math.floor(speed);

    //3.检测停止

    if(icur == target){

    clearInterval(obj.timer);

    if(fn){

    fn()

    }

    }

    else{

    if(attr == 'opacity'){

    <!--针对IE浏览器-->

    obj.style.filter = 'alpha:(opacity:'+(icur + speed)+')';

    <!--针对火狐或者谷歌浏览器-->

    obj.style.opacity = (icur +speed)/100;

    }

    else{

    obj.style[attr]= icur + speed +'px';<!--(透明度不加PX的)-->

    }

    }

    },30)

    }


JS动画效果

通过本课程JS动画的学习,从简单动画开始,逐步深入各种动画框架封装

113925 学习 · 1443 问题

查看课程

相似问题