首頁  >  文章  >  web前端  >  原生js實作fadein 和 fadeout淡入淡出效果_javascript技巧

原生js實作fadein 和 fadeout淡入淡出效果_javascript技巧

WBOY
WBOY原創
2016-05-16 16:46:061956瀏覽

js裡面設定DOM節點透明度的函數屬性:filter= "alpha(opacity=" value ")"(相容ie)和opacity=value/100(相容於FF和GG)。

先來看看設定透明度的相容性代碼:

複製代碼 代碼如下:

function setOpacity(ele, opacity) {
if (ele.style.opacity != undefined) {
////FF和GG和新版本IE
ele.style.opacity = opacity / 100;

} else {
///相容舊版ie
ele.style.filter = "alpha(opacity=" opacity ")";
}
}

關於有的朋友這樣寫:
複製程式碼 程式碼:
複製程式碼


程式碼>

function setOpacity(ele, opacity) {
if (document.all) {
///相容ie
ele.style.filter = "alpha(opacity=" opacity " )";
}
ele {
///兼容FF和GG
ele.style.opacity = opacity / 100;
}
}


我想說這樣在IE10下運作有問題,點了之後沒反應。因為IE10支援opacity屬性不支援filter了,這個方法不可取。
fadein 函式碼: 複製程式碼

程式碼如下:



程式碼如下:



程式碼如下:if (ele) {
var v = ele.style.filter.replace("alpha(opacity=", "").replace(")", "") || ele.style.opacity;
v var count = speed / 1000;
var avg = count var timer = null;
timer = setInterval(function() {
if (v v = avg;
setOpacity(ele, v);
} else {
clearInterval(timer);
} }, 500); } } }
}


fadeout 函數程式碼:




複製程式碼


程式碼如下:


function fadeout(ele, opacity, speed) { if (ele) {
var v = ele.style.filter.replace("alpha(opacity=", "").replace(")", "") || ele.style.opacity || 100 ;
v var count = speed / 1000;
var avg = (100 - opacity) / count;
var timer = null;
timer = setInterval(function() {
if (v - avg > opacity) {
v -= avg;
setOpacity(ele, v); } else { clearInterval(ele, v); } else { clearInterval( timer); } }, 500);
}
}


下面給一個demo範例:





複製程式碼


程式碼如下:









}
有什麼更好的實作方式可以留言。 。 。
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn