導航那里,如果鼠標快速跨越2個A標簽,然后文字就會抖動了,你們的會么,應該是定時器問題,怎么解決?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>導航菜單</title>
<style type="text/css">
*{margin:0; padding:0; font-size:14px;}
ul{ list-style:none;}
a{color:#333;text-decoration:none}
.nav{border-bottom: 5px solid #F60;padding-left: 50px;height: 30px;margin-top: 50px;}
.nav li{ float: left;}
.nav li a{ display:block; text-align: center; height:30px; line-height:30px; width:100px; background-color:#efefef; margin-bottom:1px;}
.nav .on,.nav li a:hover{ background-color:#F60; color:#fff;}
</style>
<script>
window.onload=function(){
function getstyle(obj,attr){
return( obj.currentStyle?obj.currentStyle[attr]:getComputedStyle(obj)[attr]);//各種瀏覽器下獲取變量的屬性參數(shù)
}
var oul=document.getElementsByTagName('ul')[0];
var aA=oul.getElementsByTagName('a');
var timer=null;
var timer1=null;
for(var i=0;i<aA.length;i++){
aA[i].onmouseover=function(){
var _this=this;
//alert(getstyle(_this,'width'));
clearInterval(timer);
timer=setInterval(function(){
// _this.style.width=_this.style.width+8+'px'; ?//width 不可以直接加的 要用getstyle 那個函數(shù)獲取值 再加px
//_this.style.width=_this.offsetWidth+8+'px';
_this.style.width= parseInt(getstyle(_this,'width'))+8+'px';
if(parseInt(getstyle(_this,'width'))>=160){clearInterval(timer);}
},30)
}
aA[i].onmouseout=function(){
var _this1=this;
clearInterval(timer1);
timer1=setInterval(function(){
// _this.style.width=_this.style.width+8+'px'; ?//width 不可以直接加的 要用getstyle 那個函數(shù)獲取值 再加px
//_this.style.width=_this.offsetWidth+8+'px';
_this1.style.width= parseInt(getstyle(_this1,'width'))-8+'px';
if(parseInt(getstyle(_this1,'width'))<=100){clearInterval(timer1);_this1.style.width=100+'px';}
},30)
}
}
}
</script>
</head>
<body>
<ul class="nav">
? ? <li><a href="#" class="on">首 頁</a></li>
? ? <li><a href="#">新聞快訊</a></li>
? ? <li><a href="#">產(chǎn)品展示</a></li>
? ? <li><a href="#">售后服務</a></li>
? ? <li><a href="#">聯(lián)系我們</a></li>
? </ul>
</body>
</html>
2022-03-25
《《《《《《《《《《《搞到了沒?
2016-09-29
應該是30毫秒的事,把時間調(diào)短就沒事了,時間越長,越明顯,這應該是人眼識別的幀率有關,但是我查了一下人眼幀率,30毫秒又足夠了,但是調(diào)低了之后又有作用,希望其他路過的大神能解釋一下。
2016-09-24
注意老師的鼠標每次都是從下方移動到導航條上,在避免觸及多個。
2016-09-14
我也出現(xiàn)過,不僅快速抖動,而且標簽無限拉長。應該是沒有清除計時器,照著例子加上clearInterval(this.time);這句清理計時器的語句,就不會出現(xiàn)這種問題了。你這個自己寫的js語句里清除計時器的那句應該沒有發(fā)揮作用。我知道的只有這些~~