雪降り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>
最後に「雪降り」を掲載しておきます。
上の雪降りをクリック(戻る時はツールバーで)
   
   
