JavaScript

ガイド:高橋 登史朗

Ajaxなど、何かと最近騒がれているJavaScriptの最新情報とその活用方法を解説します。

掲示板 取材依頼 問合せ

クロスブラウザを制する

掲載日: 2002年 09月 18日

クロスブラウザを制する Part 2 2-35 レイヤーリサイズ(相対)


[ update ] 2002.10.15 o6でも動作可能に
[ update ] 2002.9.28 e4用処理を修正
T E S T


























resizeByLAYER(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 resizeByLAYER(layName,offsetx,offsety){
    if(window.opera){                        //opera
      var oj = document.getElementById(layName).style
      oj.pixelWidth  = oj.pixelWidth  + offsetx
      oj.pixelHeight = oj.pixelHeight + offsety
    } else if(document.getElementById){      //e5,e6,n6,n7,m1用
      var oj = document.getElementById(layName).style
      oj.width  = parseInt(oj.width)  + offsetx+'px'
      oj.height = parseInt(oj.height) + offsety+'px'
    } else if(document.all){                 //e4用
      var oj = document.all(layName).style
      oj.pixelWidth  = oj.pixelWidth  + offsetx
      oj.pixelHeight = oj.pixelHeight + offsety
    } else if(document.layers)               //n4用
      document.layers[layName].resizeBy(offsetx,offsety)
  }



  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>

<!--↓このレイヤ−のサイズが変ります///////////-->
<div id="lay0"
     style="position         : absolute  ;
            width            : 100px     ;/* ←必須 */
            height           : 50px      ;/* ←必須 */
            left             : 100px     ;
            top              : 100px     ;">
 T E S T 
</div>

<form>
<input type="button" style="width:450px"
       value="背景画像無し、背景色#ffcc00、幅+20px 高さ+10px にリサイズ"
       onclick="setBGIMG('lay0','');
                setBGCOLOR('lay0','#ffcc00');
                resizeByLAYER('lay0',20,10)"><br>


<input type="button" style="width:450px"
       value="背景画像有り、背景色無し、幅-10px 高さ-10px にリサイズ"
       onclick="setBGIMG('lay0','./300300.gif');
                setBGCOLOR('lay0','');
                resizeByLAYER('lay0',-10,-10)">
</form>




* 緑文字が今回の関数
* 赤文字がこのスクリプトで最初に動作する部分
						
レイヤーの現サイズを基準にして指定したピクセル分変更するためのサンプルです。 CSSでwidth,heightの初期値をあらかじめ設定しておくことが必須です。 n4ではレイヤ−を移動させるメソッドresizeBy(x方向,y方向)を使い、 e4,e5,e6,n6,n7,m1ではプロパティwidth,heighへ値を代入していますが、 e4以外のW3C-DOM対応ブラウザでは値に単位がついているためparseInt()で数値化してから加算しています。 このサンプルでレイヤーの背景色と背景画像をそれぞれsetBGCOLOR()、 setBGIMG()で設定しているのは n4対策です。 n4ではbackground-color や background-imageを CSSへ書き込むとレイヤーの背景色と背景画像がうまく設定されないバグがあります。 そこで、 CSSへは直接書かずに上記関数によって JavaScriptから設定しています。 o6は背景画像を書き出した後には背景色を上書きすることができません。


シリーズ目次 |



関連用語: フラット35 /  35mm判換算値 / 

ガイドメールマガジン
携帯電話のメールアドレスでは登録できません

掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます。