雪降りJavaScriptについて 
HTML形式のメールを拝見していますと
何と言ってもこの「雪降り」は多いのです。
写真は勿論ですが、JavaScriptを使うと
なるとまずは、この「雪降り」は何としても
マスターして置かないと話になりません。
また、これを足がかりに他のJavaScript
に付いても少しずつ解る様になります。
メールのソースはこんな具合です。(解説は茶色です)
青い部分を変更すれば良いのです。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD
HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>yuki wo huraseru</TITLE>
<META http-equiv=Content-Type content="text/html;
charset=iso-2022-jp">
<BASE href="file://C:\Program Files\Common Files\Microsoft Shared\Stationery\">
<META content="MSHTML 6.00.2712.300"
name=GENERATOR>
<STYLE></STYLE>
</HEAD>
ここまでがHEADの部分です。 お決まりの部分です。
<BODY text=#000000 bgColor=#000080>
<!--** kokokara sitawo kopi- suru ** gazou
wa kokodewa 2tu **
sugusita no src=" "
**-->
<DIV><IMG id=drop height=0 src="cid:005a01c19ec8$d541ed80$953b10ac@cc9.ne.jp"
width=0> <IMG id=drop1 height=0
src="cid:005b01c19ec8$d541ed80$953b10ac@cc9.ne.jp" width=0>
この上で降らせる画像(雪の画像を2つ)を指定しています
このメールはBASEがStationeryにありますから、それを基準にして
挿入する画像のURL(所在地とファイル名)を入れ替えます。
例えば、”cid:005b01c19ec8$d541ed80$953b10ac@cc9.ne.jp”の代わりに
"C:\mail-data\gazou\yuki1.gif"と書き換えます。(画像が別の場所の時)
"yuki1.gif"これだけで良いのは同じフォルダ(Ststionery)にある時です。
<SCRIPT language=JavaScript1.2>
<!-- yuki huri Begin
var no = 30; // snow number(雪の総数)
var speed = 20; // smaller number moves the snow faster(大きいと遅い)
ここの、30や20の数字を変えると雪の総数や落ちる速さが変わります。
balloon = new Array();
balloon[0] = document.all("drop").src;
balloon[1] = document.all("drop1").src;
var maxballoon = 1; // 画像の数-1
ここの1は画像の種類が2つですから、 2−1=1 です。
では画像の種類を増やすにはどうするかといいますと、
1.画像のファイル名を書いた所で
<IMG id=drop2 height=0 src="ame1.gif" width=0>
<IMG id=drop3 height=0 src="hyou1.gif" width=0>
こんな具合に追加して、
2.すぐ上の部分で
balloon[2] = document.all("drop2").src;
balloon[3] = document.all("drop3").src;
これも追加し
3.その下の数字も 4−1=3 ですから 3 に変更します。
ここから下は変更しません。
var ns4up = (document.layers) ? 1 : 0;
// browser sniffer
var ie4up = (document.all) ? 1 : 0;
var dx, xp, yp; // coordinate
and position variables
var am, stx, sty; // amplitude and
step variables
var i, doc_width = 500, doc_height = 600;
if (ns4up) {
doc_width = self.innerWidth;
doc_height = self.innerHeight - 50;
} else if (ie4up) {
doc_width = document.body.clientWidth;
doc_height = document.body.clientHeight
-250;
}
dx = new Array();
xp = new Array();
yp = new Array();
am = new Array();
stx = new Array();
sty = new Array();
j = maxballoon;
for (i = 0; i < no; ++ i) {
dx[i] = 0;
// set coordinate variables
xp[i] = Math.random()*(doc_width-50);
// set position variables
yp[i] = Math.random()*doc_height;
am[i] = Math.random()*20;
// set amplitude variables
stx[i] = 0.02 + Math.random()/3; //
set step variables
sty[i] = 0.7 + Math.random()*3;
// set step variables
if (ns4up) {
// set layers
if (i == 0) {
document.write("<layer
name=\"dot"+ i +"\" left=\"15\"
top=\"500\" visibility=\"show\"><img
src=\"" + balloon[j] + "\"
border=\"0\"></layer>");
} else {
document.write("<layer
name=\"dot"+ i +"\" left=\"15\"
top=\"500\" visibility=\"show\"><img
src=\"" + balloon[j] + "\"
border=\"0\"></layer>");
}
} else if (ie4up) {
if (i == 0) {
document.write("<div
id=\"dot"+ i +"\" style=\"POSITION:
absolute; Z-INDEX: "+ i +"; VISIBILITY:
visible; TOP: 500px; LEFT: 15px;\"><img
src=\"" + balloon[j] + "\"
border=\"0\"></div>");
} else {
document.write("<div
id=\"dot"+ i +"\" style=\"POSITION:
absolute; Z-INDEX: "+ i +"; VISIBILITY:
visible; TOP: 500px; LEFT: 15px;\"><img
src=\"" + balloon[j] + "\"
border=\"0\"></div>");
}
}
if (j == 0) { j = maxballoon; } else
{ j -= 1; }
}
function snowNS() { // Netscape main
animation function
for (i = 0; i < no; ++ i) {
// iterate for every dot
yp[i] += sty[i];
if (yp[i] > doc_height) {
xp[i] = Math.random()*(doc_width-30);
yp[i] = 0;
stx[i] = 0.02 + Math.random()/3;
sty[i] = 0.7 + Math.random()*3;
doc_width = self.innerWidth;
doc_height = self.innerHeight
-50;
}
dx[i] += stx[i];
document.layers["dot"+i].top
= yp[i];
document.layers["dot"+i].left
= xp[i] + am[i]*Math.sin(dx[i]);
}
setTimeout("snowNS()", speed);
}
function snowIE() { // IE main animation
function
for (i = 0; i < no; ++ i) {
// iterate for every dot
yp[i] += sty[i];
if (yp[i] > doc_height+40) {
xp[i] = Math.random()*(doc_width-am[i]-30);
yp[i] = -40;
stx[i] = 0.02 + Math.random()/3;
sty[i] = 0.7 + Math.random()*3;
doc_width = document.body.clientWidth;
doc_height = document.body.clientHeight
-50;
}
dx[i] += stx[i];
document.all["dot"+i].style.pixelTop
= yp[i];
document.all["dot"+i].style.pixelLeft
= xp[i] + am[i]*Math.sin(dx[i]);
}
setTimeout("snowIE()", speed);
}
if (ns4up) {
snowNS();
} else if (ie4up) {
snowIE();
}
// End --></SCRIPT>
</DIV><!--** kokomade wo body
no nakani ireru **--></BODY></HTML>
最後に「雪降り」を掲載しておきます。
上の雪降りをクリック(戻る時はツールバーで)

