ボタンクリックで、ボックス要素を透明から不透明に徐々に変更するフェードインのアニメーションのJavaScriptサンプル。
jQuery APIのfadeIn( duration )などを使えば簡単だが、JavaScriptだけで作ってみた。
サンプル(実装例)
実装例の動作について
「透明から不透明に」ボタンをクリックすると、背景色が赤色のボックス要素の不透明度を「0」から「1」に徐々に変更するフェードインのアニメーションを実行する。
ソースコード
JavaScript
<script type="text/javascript">
function changeOpacity( $a, $b ) {
document.getElementById( "sampleButton" ).disabled = true;
var $intervalID = setInterval(
function(){
main();
},
10
);
function main() {
var $targetElement = document.getElementById( "sample" );
$a = $a + 0.01;
if( $a <= $b ){
$targetElement.style.cssText = "opacity:" + $a + ";";
}else{
clearInterval( $intervalID );
document.getElementById( "sampleButton" ).disabled = false;
}
}
}
</script>
function changeOpacity( $a, $b ) {
document.getElementById( "sampleButton" ).disabled = true;
var $intervalID = setInterval(
function(){
main();
},
10
);
function main() {
var $targetElement = document.getElementById( "sample" );
$a = $a + 0.01;
if( $a <= $b ){
$targetElement.style.cssText = "opacity:" + $a + ";";
}else{
clearInterval( $intervalID );
document.getElementById( "sampleButton" ).disabled = false;
}
}
}
</script>
HTML
<button id="sampleButton" onclick="changeOpacity( 0, 1 );">透明から不透明に</button>
<div id="sample"></div>
<div id="sample"></div>
CSS
<style>
#sample {
width: 150px;
height: 150px;
background-color: red;
}
</style>
#sample {
width: 150px;
height: 150px;
background-color: red;
}
</style>
解説
JavaScript
<script type="text/javascript">
// 不透明度を表す2つの仮引数「$a、$b」を受け取るユーザー定義関数
function changeOpacity( $a, $b ) {
// id属性値が「sampleButton」であるボタンを無効化
document.getElementById( "sampleButton" ).disabled = true;
// 10ミリ秒ごとに「main()」関数を呼び出す繰り返しタイマー
var $intervalID = setInterval(
function(){
main();
},
10
);
// // 1ミリ秒ごとに呼び出されるユーザー定義関数
function main() {
// id属性値が「sample」である要素への参照を変数「$targetElement」に代入
var $targetElement = document.getElementById( "sample" );
// 不透明度を表す変数「$a」に「0.01」を加算
$a = $a + 0.01;
// 不透明度が、変数「$b」の値以下の場合
if( $a <= $b ){
// スタイル属性値を指定
$targetElement.style.cssText = "opacity:" + $a + ";";
// 不透明度が、変数「$b」の値以下でない場合
}else{
// 繰り返しタイマーを中止
clearInterval( $intervalID );
// id属性値が「sampleButton」であるボタンを有効化
document.getElementById( "sampleButton" ).disabled = false;
}
}
}
</script>
// 不透明度を表す2つの仮引数「$a、$b」を受け取るユーザー定義関数
function changeOpacity( $a, $b ) {
// id属性値が「sampleButton」であるボタンを無効化
document.getElementById( "sampleButton" ).disabled = true;
// 10ミリ秒ごとに「main()」関数を呼び出す繰り返しタイマー
var $intervalID = setInterval(
function(){
main();
},
10
);
// // 1ミリ秒ごとに呼び出されるユーザー定義関数
function main() {
// id属性値が「sample」である要素への参照を変数「$targetElement」に代入
var $targetElement = document.getElementById( "sample" );
// 不透明度を表す変数「$a」に「0.01」を加算
$a = $a + 0.01;
// 不透明度が、変数「$b」の値以下の場合
if( $a <= $b ){
// スタイル属性値を指定
$targetElement.style.cssText = "opacity:" + $a + ";";
// 不透明度が、変数「$b」の値以下でない場合
}else{
// 繰り返しタイマーを中止
clearInterval( $intervalID );
// id属性値が「sampleButton」であるボタンを有効化
document.getElementById( "sampleButton" ).disabled = false;
}
}
}
</script>
主に使用した構文、プロパティ、メソッド、イベント等。