忍者ブログ

17May

[PR]

Posted by in

×

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

22Apr

画面を暗くする。

Posted by No Name Ninja in Javascript Sample

画面を暗くして、写真が浮かび上がるサイトを見かけます。今回は画面を暗くする方法のみを紹介します。
簡単に書くと画面いっぱいの黒いDIVテーブルを作成して半透明にしてオーバーレイしています。

DEMO
解説

<script type="text/javascript">
function fadeout(){
  //画面いっぱいに表示する要素を作成する
  var ds = document.createElement('div');
  ds.style.display = 'none';
  ds.style.backgroundColor = '#000000';
  ds.setAttribute('id','testId');
  ds.style.position='absolute';
  ds.style.width='100%';
  ds.style.left='0px';
  ds.style.top='0px';
  ds.style.height= document.documentElement.clientHeight +'px';

  //要素の透明度を設定する。(ブラウザ依存)
  var userAgent = window.navigator.userAgent.toLowerCase();
  //for I.E.
  if (userAgent.indexOf("msie") > -1) {
    ds.style.filter='alpha(opacity=50)';
  }
  //for Other Browsers
  else {
    ds.style.opacity=.5;
  }


  //BODYの最後尾に付け加えて表示させる。
  document.body.appendChild(ds);
  ds.style.display = 'block';


  //3秒後に解除する。
  setTimeout("fadeIn()", 3000);

}

function fadeIn(){
  var tarElement = (document.getElementById("testId"));
  tarElement.parentNode.removeChild(tarElement);

}

</script>


・fadeout
サンプルではボタン押されたときに実行しています。
まず、DIV要素を作成します。画面いっぱいに表示される黒色のセルのDIVテーブルです。スタイルシートで指定していることをJavascriptで実行しています。要素にID付与しているのはおまけです(ds.setAttribute('id','testId');)。後でこの要素を消しやすくするためです。
『ds.style.display = 'none';』は念のためです。作成途中でレンダリングを防ぐためです。

要素作成するとき、透明度指定しますが、ブラウザ依存します。I.E.の指定だけ異なるみたいです。
作成完了したら、BODY要素の最後尾にこのDIV要素をつけたして表示させます。
表示させたら、画面上位にDIVテーブルが表示されるので、画面操作ができません。本来であればこのDIV要素に新たな画面操作を表示させるのが普通ですが、今回は手間なので、3秒後に自動的に解除する形にしました。fadIn関数を3秒後に実行します。

・fadeIn
fadeout関数の中で『3秒後に呼び出す』イベントとして登録しました。
DIV作成j時にID名『testId』をつけているので、これを使って要素を抽出します。削除するときは、親要素から削除しますので、親要素から削除する形となっています。


 

※動作確認環境
・chrome 23 ○
・firefox 3.6 ○
・i.e.8  ○  
・Safari5.0.5 ○

 

PR

Comment


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