原生js实现fadein 和 fadeout淡入淡出效果

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 函数代码:



复制代码 代码如下:



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 函数代码:



复制代码 代码如下:



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);


}


}



下面给一个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”” width=100% 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>



有什么更好的实现方式可以留言。。。

SyntaxHighlighter.highlight();