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

看以下代码,为什么mouseout后图像一直在闪?

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Examples</title>
<meta name="description" content="">
<meta name="keywords" content="">
<link href="" rel="stylesheet">
<style type="text/css">
	*{margin: 0;padding: 0;}
	#box{width: 200px;
		height: 200px;
		background-color: blue;
		opacity: 0.3;
		margin-left: 50px;}
</style>
</head>
<body>
    <div id = "box"></div>
<script type="text/javascript">
window.onload = function(){
	var box1 = document.getElementById('box');
	box1.onmouseover = function(){changeTo(1.0)};
	box1.onmouseout = function(){changeTo(0.3)};
}

var timer = null,alpha = 0.3;
function changeTo(a){
	clearInterval(timer);
	var box1 = document.getElementById('box');		
	timer = setInterval(function(){	
	if (alpha < a ){		
		alpha += 0.1;
		box1.style.opacity = alpha; }
	else if(alpha > a){
		alpha -= 0.1;
		box1.style.opacity = alpha; 
	}	
	else  {clearInterval(timer);}
	},300)
}

</script>
</body>
</html>


正在回答

3 回答

按照老师的做法  把透明度改成100、 30 然后最后设定时去除以100即可。可能是因为底层JS运算小数的时候因为进制关系无法准确算到0.3或者1.0……

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

透明度到底是为了变为0.1还是0.3?

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

weibo_尛进进_04125716 提问者

0.3,0.1是变化的速度,每300ms变0.1
2016-12-07 回复 有任何疑惑可以回复我~

把定时器的时间值设置小点

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

weibo_尛进进_04125716 提问者

我故意设大点,能明显看出来在1.0和1.1之间闪动,不知道为什么
2016-12-07 回复 有任何疑惑可以回复我~
#2

weibo_尛进进_04125716 提问者

看浏览器代码里的透明度,会在1.0和1.1之间跳动,鼠标移出会在0.2和0.3之间跳动
2016-12-07 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

看以下代码,为什么mouseout后图像一直在闪?

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