原生js實(shí)現(xiàn)fadein 和 fadeout淡入淡出效果
更新時(shí)間:2014年06月05日 15:24:56 作者:
這篇文章主要介紹了通過原生js實(shí)現(xiàn)fadein 和 fadeout淡入淡出效果,需要的朋友可以參考下
js里面設(shè)置DOM節(jié)點(diǎn)透明度的函數(shù)屬性:filter= "alpha(opacity=" + value+ ")"(兼容ie)和opacity=value/100(兼容FF和GG)。
先來看看設(shè)置透明度的兼容性代碼:
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 + ")";
}
}
關(guān)于有的小伙伴這樣寫:
function setOpacity(ele, opacity) {
if (document.all) {
///兼容ie
ele.style.filter = "alpha(opacity=" + opacity + ")";
}
ele {
///兼容FF和GG
ele.style.opacity = opacity / 100;
}
}
我想說這樣在IE10下運(yùn)行有問題,點(diǎn)了之后沒反應(yīng)。因?yàn)镮E10支持opacity屬性不支持filter了,這個(gè)方法不可取。
fadein 函數(shù)代碼:
function fadein(ele, opacity, speed) {
if (ele) {
var v = ele.style.filter.replace("alpha(opacity=", "").replace(")", "") || ele.style.opacity;
v < 1 && (v = v * 100);
var count = speed / 1000;
var avg = count < 2 ? (opacity / count) : (opacity / count - 1);
var timer = null;
timer = setInterval(function() {
if (v < opacity) {
v += avg;
setOpacity(ele, v);
} else {
clearInterval(timer);
}
}, 500);
}
}
fadeout 函數(shù)代碼:
function fadeout(ele, opacity, speed) {
if (ele) {
var v = ele.style.filter.replace("alpha(opacity=", "").replace(")", "") || ele.style.opacity || 100;
v < 1 && (v = v * 100);
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(timer);
}
}, 500);
}
}
下面給一個(gè)demo示例:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript" src="fade.js"></script>
<script type="text/javascript">
window.onload = function () {
document.getElementById('Button1').onclick = function () {
fadeout(document.getElementById('DV'), 0, 6000);
}
document.getElementById('Button2').onclick = function () {
fadein(document.getElementById('DV'), 80, 6000);
}
}
</script>
</head>
<body>
<div id="DV" style="background-color: green; width: 400px; height: 400px;"></div>
<input id="Button1" type="button" value="button" />
<input id="Button2" type="button" value="button" />
</body>
</html>
有什么更好的實(shí)現(xiàn)方式可以留言。。。
先來看看設(shè)置透明度的兼容性代碼:
復(fù)制代碼 代碼如下:
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 + ")";
}
}
關(guān)于有的小伙伴這樣寫:
復(fù)制代碼 代碼如下:
function setOpacity(ele, opacity) {
if (document.all) {
///兼容ie
ele.style.filter = "alpha(opacity=" + opacity + ")";
}
ele {
///兼容FF和GG
ele.style.opacity = opacity / 100;
}
}
我想說這樣在IE10下運(yùn)行有問題,點(diǎn)了之后沒反應(yīng)。因?yàn)镮E10支持opacity屬性不支持filter了,這個(gè)方法不可取。
fadein 函數(shù)代碼:
復(fù)制代碼 代碼如下:
function fadein(ele, opacity, speed) {
if (ele) {
var v = ele.style.filter.replace("alpha(opacity=", "").replace(")", "") || ele.style.opacity;
v < 1 && (v = v * 100);
var count = speed / 1000;
var avg = count < 2 ? (opacity / count) : (opacity / count - 1);
var timer = null;
timer = setInterval(function() {
if (v < opacity) {
v += avg;
setOpacity(ele, v);
} else {
clearInterval(timer);
}
}, 500);
}
}
fadeout 函數(shù)代碼:
復(fù)制代碼 代碼如下:
function fadeout(ele, opacity, speed) {
if (ele) {
var v = ele.style.filter.replace("alpha(opacity=", "").replace(")", "") || ele.style.opacity || 100;
v < 1 && (v = v * 100);
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(timer);
}
}, 500);
}
}
下面給一個(gè)demo示例:
復(fù)制代碼 代碼如下:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript" src="fade.js"></script>
<script type="text/javascript">
window.onload = function () {
document.getElementById('Button1').onclick = function () {
fadeout(document.getElementById('DV'), 0, 6000);
}
document.getElementById('Button2').onclick = function () {
fadein(document.getElementById('DV'), 80, 6000);
}
}
</script>
</head>
<body>
<div id="DV" style="background-color: green; width: 400px; height: 400px;"></div>
<input id="Button1" type="button" value="button" />
<input id="Button2" type="button" value="button" />
</body>
</html>
有什么更好的實(shí)現(xiàn)方式可以留言。。。
相關(guān)文章
用javascript實(shí)現(xiàn)點(diǎn)擊鏈接彈出"圖片另存為"而不是直接打開
用javascript實(shí)現(xiàn)點(diǎn)擊鏈接彈出"圖片另存為"而不是直接打開...2007-08-08js實(shí)現(xiàn)多選項(xiàng)切換導(dǎo)航菜單的方法
這篇文章主要介紹了js實(shí)現(xiàn)多選項(xiàng)切換導(dǎo)航菜單的方法,可實(shí)現(xiàn)動態(tài)生成多選項(xiàng)切換導(dǎo)航菜單的功能,是非常實(shí)用的技巧,需要的朋友可以參考下2015-02-02JS連接SQL數(shù)據(jù)庫與ACCESS數(shù)據(jù)庫的方法實(shí)例
這篇文章主要介紹了JS連接SQL數(shù)據(jù)庫與ACCESS數(shù)據(jù)庫的方法實(shí)例,有需要的朋友可以參考一下2013-11-11JavaScript實(shí)現(xiàn)移動端禁止下拉露出網(wǎng)址廣告屏蔽技巧
這篇文章主要為大家介紹了JavaScript實(shí)現(xiàn)移動端禁止下拉露出網(wǎng)址或的廣告屏蔽技巧示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06解決微信小程序中轉(zhuǎn)換時(shí)間格式IOS不兼容的問題
今天小編就為大家分享一篇關(guān)于解決微信小程序中轉(zhuǎn)換時(shí)間格式IOS不兼容的問題,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-02微信小程序一周時(shí)間表功能實(shí)現(xiàn)
這篇文章主要介紹了微信小程序一周時(shí)間表功能實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10JS實(shí)現(xiàn)touch 點(diǎn)擊滑動輪播實(shí)例代碼
這篇文章主要介紹了JS實(shí)現(xiàn)touch 點(diǎn)擊滑動輪播實(shí)例代碼,需要的朋友可以參考下2017-01-01