问答详情
源自:5-1 JS链式动画

求大佬指教,应该是调用的框架有问题,代码写的是更改width,QQ和Chrome上却改变的是透明度,请大佬指教


<!DOCTYPE html>


<html>


<head>


<meta charset="UTF-8">

<title>JS链式运动</title>

<style type="text/css">

body {

margin: 0;

padding: 0;

}


ul,

       li {

list-style: none;

}


li {

width: 200px;

height: 100px;

background-color: brown;

margin-bottom: 20px;

border: 4px solid#000;

filter: alpha(opacity, 30);

opacity: 0.3;

}

</style>


<script src="链式动画框架.js"> </script>

<script>

window.onload = function () {

var Li = document.getElementById('li1');

Li.onmouseover = function () {

startMove(Li,'width',400);

}

}

</script>


</head>


<body>

<ul>

<li id="li1"></li>

</ul>

</body>


</html>

//////////////////////////////////////////////////////////调用框架

function getStyle(obj, attr) {

   if (obj.currentStyle) {

       return obj.currentStyle[attr];

} else {

       return getComputedStyle(obj, false)[attr];

}

}


function startMove(obj, attr, iTarget) {

clearInterval(obj.timer);

   obj.timer = setInterval(function () {

       //1. 去当前的值

       var icur = 0;

       if (attr = 'opacity') {

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

} else {

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

}

       //2. 算速度

       var speed = (iTarget - icur) / 8;

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

       //3. 检测停止

       if (icur == iTarget) {

clearInterval(obj.timer);

} else {

           if (attr == 'opacity') {

               obj.style.filter = 'alpha(opacity:' + (icur + speed) + ')'; //IE浏览器整数几十

               obj.style.opacity = (icur + speed) / 100; //火狐or chrome,小数零点几

} else {

               obj.style[attr] = icur + speed + 'px';

}


}

}, 30)

}


提问者:星空雪光的绮丽 2018-09-11 22:39

个回答

  • qq_零_137
    2018-09-13 10:48:24

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

    这句应该改成

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