亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么實現不了和老師一樣的效果,各位大神,求助

window.onload=function(){

var div=document.getElementById('move'),

a=div.getElementsByTagName('a');

for(var i=0;i<a.length;i++){

a[i].onmouseover=function(){

var _this=this.getElementsByTagName('img')[0];

startmove(_this,{top:-25,opacity:0},function(){

_this.style.top=30+'px';

startmove(_this,{top:25,opacity:1});

})

}

}

}





function getstyle(obj,attr){

if (obj.currentStyle) {

return obj.currentStyle[attr];

}else{

return getComputedStyle(obj,false)[attr];

}

}

//startmove(obj,{attr1:target1,attr2:target2}):同時傳入多個屬性與屬性值

function startmove(obj,json,fn){

clearInterval(obj.timer);

obj.timer=setInterval(function(){

var flag=true;//假設所有的運動都到達目標值

for(var attr in json){

//取當前值

var icur=0;


if (attr=='opacity') {

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

}else{

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

}

//算速度

var speed=(json[attr]-icur)/8;

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

//檢測停止

//某一個屬性到達目標值之后就會清除定時器,這時候如果其中有一個屬性比較快到達目標值時,那么就會觸發清除定時器,導致其它的屬性還沒有到達目標值,就被迫停止了。所以得讓所有得屬性到達目標值時才能關閉定時器

if (icur!=json[attr]) {

flag=false;

}

//如果屬性是透明度的話要用if另做判斷,因為透明度沒有單位,和其他屬性不一樣

if (attr=='opacity') {

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

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

}else{

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

}

}

//如果所有的運動都到達目標值,那么就觸發觸發清除定時器,如果有外加函數,那么就再執行外加函數fn()

if (flag==true) {

clearInterval(obj.timer);

//如果有外加函數,就執行

if (fn) {

fn();

}

}

},30)

}



實現不了效果會是我結構上的問題嗎?求大神幫忙看下,謝謝!

正在回答

2 回答

是這個 ?

var _this=_this.getElementsByTagName('i')[0];

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

慕粉18144024425 提問者

已經解決,還是要感謝你
2017-01-17 回復 有任何疑惑可以回復我~
#2

慕粉222241287

為什么,this的第一個i[0]就是a點到的那個i標簽呢,求解
2017-03-05 回復 有任何疑惑可以回復我~

var _this=this.getElementsByTagName('img')[0];

改成

var _this=this.getElementsByTagName('i')[0];

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么實現不了和老師一樣的效果,各位大神,求助

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號