雪降り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 ですから  に変更します。

   ここから下は変更しません。

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>

最後に「雪降り」を掲載しておきます。

上の雪降りをクリック(戻る時はツールバーで)