忍者ブログ

02May

[PR]

Posted by in

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

26Apr

画像の重なり順序を変更する。

Posted by No Name Ninja in Javascript Sample

画像をポジション指定すると重ねて表示することができます。その重なりの順序を変更するインターフェースをユーザに提供する方法です。
DEMO
22eb10a9.jpg『解説』

<script type="text/javascript">
var objlist;
window.onload=function(){
  //IMG要素全てのクリックをイベント登録する。
  if (document.getElementsByTagName) {
    objlist = document.getElementsByTagName('img');
    //取得したオブジェクト配列は、配列関数を持たないので、Arrayオブジェクトに再配置
    //クリック時のイベント登録と重なり順序を設定する。
    var array = new Array();
    for (i = 0; i < objlist.length; i++) {
      array[i] = objlist[i];
      objlist[i].onmousedown = onMouseDown;
      objlist[i].style.zIndex = i;
    }
    objlist = array;

  } else {
    return;
  }

}

function onMouseDown(e){
  var index = parseInt(this.style.zIndex);

  //選択された画像のzindexを最大値にする。
  this.style.zIndex = objlist.length;

  //選択された画像を配列の最後尾にする
  objlist.splice(index,1);
  objlist.push(this);
  //zIndex値を正常値に戻す。
  for(i = index; i < objlist.length; i++){
    objlist[i].style.zIndex = parseInt(objlist[i].style.zIndex) - 1;
  }

}

</script>
・window.onload
HTMLを全て読み込んだ後に実行されるイベントです。
全てのIMG要素を取得していますが、これは必要な要素のみでも可能です。
IMG配列はgetElementsByTagNameで配列として取得していますが、Arrayオブジェクトに再配置しています。これは、Arrayの 関数を使いたいためです。この際にzIndex値を設定しています。管理しやすくするため、zIndex値と配列のINDEX値は同じにしています。
クリックされたときonMouseDownが実行されるように設定します。


・onMouseDown
画像がクリックされたときに実行されるイベントです。
『zIndex値 = 配列のINDEX値』である値を取得します。
とりあえず、クリックされた画像のzIndex値を最大値にして、正面にします。
その後は、配列の再配置です。クリックされた画像を配列から削除し、最後尾に入れなおします。
配列の中で選択された以降の画像のzIndex値は『1つ大きい値』になっているため、1を引いていけば、
zIndex値が無限に大きくならずに済みます。



※動作確認環境
・chrome 23 ○
PR

Comment


Vodafone絵文字 i-mode絵文字 Ezweb絵文字