要素の透明度を変えてみた

要素を透明/不透明化させるjavascriptのライブラリみたく、cssのopacityを弄って
背景色を濃くしたり、薄くしたりしてみた。

ソース

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css">
div#opa1, div#opa2 {
	width: 300px;
	height: 200px;
	background-color: #808080;
	padding: 1em;
}
div p { color: #00f; }
</style>
<script type="text/javascript">
var x = 0; var tid1;
function setOpacity() {
	try {
		var isMSIE = /*@cc_on!@*/false;
		var fi = isMSIE ? x * 100: x;
		var fo = isMSIE ? 100 - x * 100: (1 - x);
		var elm1 = document.getElementById('opa1');
		var elm2 = document.getElementById('opa2');
		if (isMSIE) {
			//IE
			elm1.style.filter = 'alpha(opacity=' + fi + ')';
			elm2.style.filter = 'alpha(opacity=' + fo + ')';
			
		} else {
			if (elm1.style.MozOpacity) {
				//Firefox2以前?
				elm1.style.MozOpacity = fi;
				elm2.style.MozOpacity = fo;
			} else {
				//Firefox3、Safari、Opeara
				elm1.style.opacity = fi;
				elm2.style.opacity = fo;
			}
		}
		x = x + .01;
		if (x > 1) { clearTimeout(tid); return; }
		tid = setTimeout(setOpacity, 10);
	} catch(e) { ; }
}
window.onload = function() { setOpacity(); }
</script>
<title>Opacity Test</title>
</head>
<body>
<div id="opa1">
	<p>この箱がだんだん濃くなっていくよ</p>
</div>
<br>
<div id="opa2">
	<p>逆にこっちは薄くなってくよ</p>
</div>
</body>
</html>
参考サイト

http://www.tagindex.com/kakolog/q4bbs/901/1127.html
方法的には、cssのopacity値をjavascriptで増やしたり、減らしたりと至って簡単。
ブラウザ分岐の部分が我ながら怪しい気がしなくもないが、エラーをトラップしてるんでokか!?(汗

サンプル

こんな感じになります。

まとめ

これまで透明度弄ったりするのは敢えてやらなかったんだけど、いざやってみると
何気に面白かったので、エフェクト系で面白いブックマークレットとかグリモン作れないか考えてみようかな。