L05 ボタンクリックで画像を左右に移動させる

ボタンをクリックすると画面左端から画像が登場し、画面中央まで移動します。moveByLAYER('imgA',10,0)の10を-10などのマイナス値にすれば右から左へ移動します。また、0に数値を入れれば上下方向へ移動します(L06)。

応用 :
画像を取り替えたりmoveByLAYER('imgA',10,0)の数値を変えたりしてみましょう。この画像を<a HREF=...>と</A>で囲んでリンクボタンにすることも出来ます。
参照 : オブジェクトの有無を調べる if(document.images){命令}, layers[], setInterval('命令',ミリ秒), clearInterval(ID), visibility, onClick,

参考 : クロスブラウザDHTMLのサンプルページ(回線をつないでください)

Sample



Source
ソース
(コピーしてお使いください)

<html>
<head>
<title></title>

<script language="JavaScript">
<!--

//移動用関数
function moveByLAYER(layName,offsetx,offsety){

  if(document.getElementById){                            //NN6,IE5用
        var oj = document.getElementById(layName).style
        oj.left = parseInt(oj.left)+offsetx
        oj.top  = parseInt(oj.top)+offsety
  }
  else if(document.layers)
        document.layers[layName].moveBy(offsetx,offsety)  //NN4用
  else if(document.all){                                  //IE4用
       var oj = document.all(layName).style
       oj.pixelLeft+=offsetx
       oj.pixelTop+=offsety
  }

}

//x座標を取得する
function getLEFT(layName){
  if(document.getElementById)
       return parseInt(document.getElementById(layName).style.left)  //NN6,IE5用
  else if(document.layers)
       return document.layers[layName].left               //NN4用
  else if(document.all)
       return document.all(layName).style.pixelLeft       //IE4用
}

//1/1000秒ごとにmov()を実行する
function movrl(){
  IntID = setInterval('mov()',1)
}

//水平方向右へ10pxずつ動かし、xが終了位置を超えたらたらストップ
function mov(){
  if( 200 < getLEFT('imgA') )clearInterval(IntID)
  else moveByLAYER('imgA',10,0)
}

//-->
</script>

</head>

</body>

<div ID="imgA"
     style="position : absolute ;
            width    : 150px    ;
            left     : -150px   ;
            top      : 330px    ;">
   <img src="BOTAN.GIF" width=120 height=90>
</div>

<form>
  <input type="button" value=" ぼたんのボタン " onClick="movrl()">
</form>

</body>
</html>
<div>タグの中のスタイルleft : -150px は画面左端からさらに左へ150pxの場所、つまり画面上には見えない場所へこのDIVタグを置きます
関数moveByLAYER('レイヤ−名',x方向ピクセル数,y方向ピクセル数) はposition指定されたレイヤーの現在位置を起点として指定したピクセル分だけ位置を移動させるためのファンクションです。NNでは専用のメソッドmoveBy(x方向px,y方向px)を使い、IEではx,y方向へ移動させるプロパティpixelLeftとpixelTopへ+=を使ってx方向pxとy方向pxをピクセル(整数)で代入しています。たとえばpixelLeft=10ならブラウザ画面左端から10ピクセルの位置へ移動しますが、pixelLeft+=10だと現在のレイヤー位置に10足す、つまり右方向へ10ピクセルの位置へ移動するという意味になります。 IEではposLeft,posTop(実数)も使えます
position : absoluteを指定した場合 left:200px ならページの左端から200ピクセル離し、top:350pxならページの上端からの350ピクセル数の場所へ表示されます

関数getLEFT('レイヤ−名')はブラウザ左端からのレイヤ−左辺位置をピクセルで取得するためのファンクションです。NNではleft、IEではpixelLeftを使っています

IntID=setInterval('mov()',1)で1/1000毎にmov()を実行します。setTimeoutに似ていますがsetTimeoutは指定時間後に1度だけ実行するもので、setIntervalは自動的に繰り返すという違いがあります。clearInterval(IntID)でタイマーを中止します

L01L02の説明も参照してください


Contents
| CONTENTS
| PART1 これだけ知っていれば大丈夫
| PART2 サンプルの紹介
| PART3 JavaScript言語仕様
| PART4 JavaScriptクイック書式一覧
| PART5 JavaScriptサイト
| オンラインサポートページ(回線をつないでください)


Maintained by
tato@fureai.or.jp works1997 Toshirou Takahashi