Home > イヌでもわかるJavaScript講座 お品書き
イヌでもわかるJavaScript講座 お品書き へ戻ります
イヌでもわかるJavaScript講座


Step.28 - 背景色の変更 / 指定時間に関数を呼ぶ


背景色を変更させ、映画のオープニングタイトルのような画面を作ってみます。


Step テーマ
● document.bgColor (背景色の変更)
● setTimeout (指定時間に関数を呼ぶ)

実行例


もう一回見る


リスト


<html>
<head>
<title>イヌでもわかるJavaScript講座</title>
</head>
<body>
<script type="text/javascript"><!--
myColor = new Array(
"000000","101010","202020","303030",
"404040","505050","606060","707070",
"808080","909090","A0A0A0","B0B0B0",
"C0C0C0","D0D0D0","E0E0E0","FFFFFF"
);

myCnt = 0;
function myFade(){
     if (myCnt != 16){
         document.bgColor = "#" + myColor[myCnt];
         myTime = ( myCnt==0 || myCnt==15 ) ? 1000 : 50;
         myCnt++;
         setTimeout( "myFade()", myTime );
     }else{
         location.href = "fade.htm";
    }
}
// --></script>

<br><br><br><br><br><br><br>
<p align="center">
<font color="#FFFFFF" size="5">
<strong>T a t s u y a' s H o m e P a g e</strong>
</font><br><br>
<font color="#FFFFFF" size="6">
<strong>イヌでもわかるJavaScript講座</strong>
</font><br><br>
<font color="#000000" size="6">
<strong>Presented by Tatsuya</strong>
</font><br>
</p>
<script type="text/javascript"><!--
myFade();
// --></script>
</body>
</html>


サンプルだけの HTMLは こちらへ

説明


上記サンプルページの オープニング表示後に、location.href にて 別ページへリンクする仕掛けです。

オープニングの仕掛けも単純です。ただ単に背景色を、黒から白へ変更しているだけです。


● document.bgColor

背景色の変更は、document.bgColor に、色コードをセットするだけです。セットすると背景色が変更されます。

サンプルは、黒から徐々に、白になります。つまり、「徐々に」とは、暗い灰色から明るい灰色を表示していっただけのことです。
その色コードを、myColor テーブルにセットして、順番に背景色にセットしていきます。
myColor = new Array(
"000000","101010","202020","303030",
"404040","505050","606060","707070",
"808080","909090","A0A0A0","B0B0B0",
"C0C0C0","D0D0D0","E0E0E0","FFFFFF"
);
      ↓
document.bgColor = "#" + myColor[myCnt];

「イヌでもわかるJavaScript講座」を白、「Presented by Tatsuya」を黒で表示しています。
最初、背景色は黒なので、タイトルは見えて、名前は見えません。
そして、徐々に白になるので、最後はタイトルが消えて、名前が浮き出てきたわけです。


● setTimeout()

myFade() が、メインルーチンです。黒から白の 16色分 の背景色を変更していきます。

いままで、setInterval() を使って関数を時間周期に呼んでループさせていました。
もう1つ、setTimeout() というものがあります。

setTimeout( "関数名" , 起動するミリ秒 );

パラメータも、setInterval() と同じです。
なにが違うかというと、setTimeout() は、指定した時間に関数を 1回呼ぶだけです。
setInterval() は、指定した時間周期に関数を呼び続けるでした。

この setTimeout() を myFade() の中で、
setTimeout( "myFade()", myTime );
と設定しています。パラメータには 自分自身である myFade() を呼んでいます。
myFade() が、myFade() を呼ぶ。これでは結局、setInterval() と同じループになってしまいますが、

今回のサンプルの仕様は、
背景色の変更タイミングを 50ミリ秒間隔にします。しかし、最初と最後だけ 1秒間表示させます。
myTime = ( myCnt==0 || myCnt==15 ) ? 1000 : 50;

このように、myFade() 内で 時間調整するために、 setTimeout() でループさせました。

16色すべて表示(変更)したら、このページへリンクさせています。
location.href = "fade.htm";


参考ステップ
Step.2 あいさつ文を表示してみましょう ※ Array()
Step.3 現在の日付と時間を表示してみましょう ※ 三項演算子
Step.5 フォームを使って日付と時間をリアルタイムに表示してみましょう ※ setInterval()
Step.7 履歴移動ボタンをつくってみましょう ※ location.href

おまけ


● 色コードと16進数講座

色コードに A0A0A0 や CCFFCC やら使っています。これは、16進数です。

私たちが日常使っている数字は 10進数です。
0から始まり、9の次で繰り上がります。つまり、一桁は 0〜9 の 10通りです。これが 10進数です。
なんか、子供に算数を教えてるようですが・・・ (^^;

しかし、コンピュータは 16進数です。
つまり、一桁は 16通りなのです。0からはじまり、9では繰り上がらず、9の上、つまり、9+1 は A です。(^^;
0123456789ABCDEF、 F の次で、繰り上がります。

10進数は、9+1 = 10
16進数は、F+1 = 10
なのです。

10進数の 10 は「じゅう」と読みますが、16進数の 10 は「いちゼロ」と読みます。

コンピュータは 10進数が使えないわけではありません。
現に、いままでのステップはすべて 10進数を使っています。
といっても、やっぱり内部では 16進数で処理されているのです。
極論は2進数ですが (^^;

ただ、表現の違いで、16進数の 10(いちゼロ)は 10進数の 16(じゅうろく)です。どちらも同じ値です。

画面の解像度に 256色とか 65536色とか、やけにハンパな数字がでてきますよネ
16進数の 2桁の最大値、つまり、FF は、10進数に表現すると 255 です (1バイトの最大値です)。
16進数の 4桁の最大値、つまり、FFFF は、10進数に表現すると 65535 です (2バイトの最大値です)。

16進数を 10進数の表現に変えたければ、
10進数 188 は、(1*10*10)+(8*10)+8 = 188 のように、
16進数 BC は (11*16)+12 = 188 と計算するだけです。

色コードに使う 、A0A0A0 や CCFFCC やらも、16進数です。
赤、緑、青の3原色を2桁の 16進数で並べて設定します。

00 が最も暗い色、FF が最も明るい色、つまり 1色 256通りあります。
最も暗い色、00 は本当に真っ暗です。ですから、赤も緑も青も 0 でしたら(000000)、黒になります。
青色にしたければ、0000FF とすれば、もっとも明るい青ができるわけです。

今回のオープニングは 16 とばしでカウントして 16回(16色)表示したので、表示がギザギザしています。
これを 1 ずつカウントして 256回(256色)表示させれば、なめらかになるかもしれません。ひまな方はどうぞ。


【色コード一覧】 イヌでも特製カラーコード表

Q&A


[Q] サンプルをコピーすると文字化けしてしまうのですが
[A] ご使用のOSの言語設定を <META>タグで指定してください。

<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">

EUCeuc-jp
JISiso-2022-jp
SHIFT-JISShift_JIS
UTF-8UTF-8


 
イヌでもわかるJavaScript講座 お品書き へ戻ります