为了账号安全,请及时绑定邮箱和手机立即绑定

不知道为什么鼠标移动上之后opacity一直在1和1.1之间跳动

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>shareicon</title>
</head>
<style type="text/css">
*{
margin:0px;padding:0px;font:14px "微软雅黑" normal;
}
#content{
position:absolute;
left:0px;
top:200px;
width:200px;  
height:200px;
background-color: #cc3399;
opacity: 0.4;
}
#content span{ 
position:absolute; 
left:200px;
top:37.5%;  
width:20px;
height:25%;
padding-top:10px;
background-color: #99cc00;
text-align: center;
}
}
</style>
<script type="text/javascript">
window.onload=function(){

var mBox=document.getElementById("content");
mBox.onmouseover=function(){
changeOpacity(1);
}
mBox.onmouseout=function(){
changeOpacity(0.4);
}

var timer=null;
var mOpacity=0.4;
function changeOpacity(itarget){

clearInterval(timer);
timer=setInterval(function(){
var speed=0;
if(mOpacity<itarget){
speed=0.1;
}else{
speed=-0.1;
}
if(mOpacity==itarget){
clearInterval(timer);
}else{
mOpacity+=speed;
mBox.style.opacity=mOpacity;

}
},300)
}

}
</script>
<body>
<div id="content">
<span>分享</span>
</div>
</body>
</html>


正在回答

2 回答

通过控制台输出当前透明度和speed如下:

0.4/0.1

0.5/0.1

0.6/0.1

0.7/0.1

0.7999999999999999/0.1

0.8999999999999999/0.1

0.9999999999999999/0.1

1.0999999999999999/-0.1

0.9999999999999999/0.1

1.0999999999999999/-0.1

0.9999999999999999/0.1

1.0999999999999999/-0.1

0.9999999999999999/0.1

1.0999999999999999/-0.1

0.9999999999999999/0.1

1.0999999999999999/-0.1

0.9999999999999999/0.1

1.0999999999999999/-0.1

0.9999999999999999/0.1

1.0999999999999999/-0.1

0.9999999999999999/-0.1

0.8999999999999999/-0.1

0.7999999999999999/-0.1

0.7/-0.1

0.6/-0.1

0.5/-0.1



貌似原因就出在这个莫名其妙出来的小数点上,无解..

0 回复 有任何疑惑可以回复我~
#1

纪奕滨

好像后面的章节有大概类似的问题,通过一个函数方法去向上取整也可以。 不用谢~~,多讨论质疑才有进步,加油!
2015-09-20 回复 有任何疑惑可以回复我~
#2

myrtis 提问者 回复 纪奕滨

嗯嗯,我看到后面也恍然大悟了,看来不能钻牛角尖啊,哈哈,不过那个程序还没 调试好,我准备调试好再跟你说的,查了下说是二进制和十进制转换的过程中会出现这种奇怪的现象,就像你说的是本生存在的BUG。
2015-09-20 回复 有任何疑惑可以回复我~

把这些参数,值全都乘以100,最后在mBox.style.opacity=mOpacity/100,这样设置的话就不会出现你说的那种情况,可以把时间调小一点,流畅一点。

感觉这个应该是本生存在的bug,在没有改变其他东西的情况下,把你的源代码的定时器的时间调小之后,有时会出现这种现象有时不会,我也不懂怎么回事

0 回复 有任何疑惑可以回复我~
#1

myrtis 提问者

谢谢你哈!~我看老师写的filter:alpha(opacity=)是为了兼容IE低版本的浏览器,所以自己在代码里就把这一条删掉了,直接用opacity,结果出现这种bug,真的有点想不通。(定时器的时间间隔是故意调大一些这样可以在控制台看opacity的变化情况。)多物体透明度那节课我写的代码也出现了一个奇怪的现象,鼠标移开后一直闪,跟这个好像是同一个原因。
2015-09-20 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

不知道为什么鼠标移动上之后opacity一直在1和1.1之间跳动

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信