Javascript関連情報

更新日:2002年09月13日

クロスブラウザを制する 2-34 レイヤーリサイズ

レイヤーをリサイズするサンプルファンクションです。

[ update ] 2002.10.15 o6でも動作可能に
T E S T 0
T E S T 1































resizeToLAYER(layName,width,height)
Win n4 n6 n7 moz e4 e5 e6 o6,
Mac n4 n6 n7 moz e4.5 e5 ,
Linux n4 n6 n7 moz
レイヤーをリサイズするサンプルファンクションです。

<script type='text/javascript'>
<!--
    function resizeToLAYER(layName,width,height){     if(window.opera){                        //opera       document.getElementById(layName).style.pixelWidth  = width       document.getElementById(layName).style.pixelHeight = height     } else if(document.getElementById){      //e5,e6,n6,n7,m1用       document.getElementById(layName).style.width  = width+'px'       document.getElementById(layName).style.height = height+'px'     } else if(document.all){                 //e4用       document.all(layName).style.pixelWidth  = width       document.all(layName).style.pixelHeight = height     } else if(document.layers)               //n4用       document.layers[layName].resizeTo(width,height)   } 

  function setBGCOLOR(layName,color){
    //opera は透明が効かないのでページ背景色と同色へ便宜修正
    if(color=='')(!!window.opera)?color='white':color='transparent';
    if(document.getElementById)       //e5,e6,n6,n7,m1,o6用
      document.getElementById(layName).style.backgroundColor =color
    else if(document.all)             //e4用
      document.all(layName).style.backgroundColor=color
    else if(document.layers){         //n4用
      if(color=='transparent')color=null
        document.layers[layName].bgColor=color 
    }
  }

  function setBGIMG(layName,image){ 
    if(document.getElementById)             //e5,e6,n6,n7,m1,o6用
      document.getElementById(layName).style.backgroundImage 
         = (image=='')?'':'url('+image+')'
    else if(document.all)                   //e4用
      document.all(layName).style.backgroundImage='url('+image+')'
    else if(document.layers)                //n4用
      document.layers[layName].background.src=(image=='')?null:image
  }


//-->
</script>

<body onload="resizeToLAYER('lay0',100,50)   ;
resizeToLAYER('lay1',100,50) ;
setBGCOLOR('lay0','cyan') ;
setBGIMG('lay1','./300300.gif');
"> <div id="lay0" style="position : absolute ; left : 200px ; top : 200px ; width : 100px ; height : 50px ;"> T E S T 0 </div> <div id="lay1" style="position : absolute ; left : 400px ; top : 200px ; width : 100px ; height : 50px ;"> T E S T 1 </div> <form> <input type="button" value="TEST0 を 100×100にリサイズ" onclick="resizeToLAYER('lay0',100,100)"><br> <input type="button" value="TEST0 を 100×300にリサイズ" onclick="resizeToLAYER('lay0',100,300)"><br> <input type="button" value="TEST0 を 300×100にリサイズ" onclick="resizeToLAYER('lay0',300,100)"><br><br> <input type="button" value="TEST1 を 100×100にリサイズ" onclick="resizeToLAYER('lay1',100,100)"><br> <input type="button" value="TEST1 を 100×300にリサイズ" onclick="resizeToLAYER('lay1',100,300)"><br> <input type="button" value="TEST1 を 300×100にリサイズ" onclick="resizeToLAYER('lay1',300,100)"><br> </form> * 緑文字が今回の関数 * 赤文字がこのスクリプトで最初に動作する部分
レイヤーやウインドウをリサイズするにはn4ではメソッドresizeTo()を使い ます。でも、それ以外のブラウザでは、 resizeTo()でレイヤーをリサイズは できません。今回の関数はそれらの実装違いを吸収するものです。  また、このサンプルでレイヤーの背景色と背景画像をそれぞれsetBGCOLOR()、 setBGIMG()で設定していますが、これは n4対策です。n4ではbackground-color や background-imageを CSSへ書き込むとレイヤーの背景色と背景画像がうまく 設定されないバグがあります。そこで、 CSSへは書かずに上記関数によって JavaScriptから設定しています。  この事情を知らないと、スタイルシートで背景色と背景画像を指定してしまい 落とし穴にはまってしまうことになります。


シリーズ目次 |



  • 印刷する
  • ブックマークする
  • 携帯に送る
  • ブログに書く

あわせて読みたい

この記事の担当ガイド

写真

高橋 登史朗

Javascriptをはじめ、Ajax、jQueryの著書多数のガイドが、何かと最近騒がれているJa…

続きを読む

人気Javascriptランキング

Powered by 価格.com

おすすめ記事

メルマガ登録

【デジタルメルマガ】オトナのオトコなら知っておきたい、PCやデジモノに関する情報をお届けします。

All About モバイル

QRコード

All Aboutがケータイで読める!

オススメ記事をメールでチェック