jquery windowに合わせメイン部の高さをリサイズ

2012/02/14

ヘッダ部とボディ(コンテンツ)部で構成されているページでボディ(コンテンツ)部のみ高さを自動調整したい。
※jqueryはよくわからん。とりあえず「jquery」のライブラリ(?)が必要ってことは最近覚えた。

サンプル

  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  4. <title>○○○</title>
  5. <script type="text/javascript" src="jquery-1.6.4.min.js"></script>
  6. <script type="text/javascript">
  7.   /* 読み込み完了したとき */
  8.   $(document).ready(function()
  9.   {
  10.     // IE系だと先に高さを適当に指定してあげる必要あり。
  11.     if (!jQuery.support.style)
  12.     {
  13.       $("#hed").css({"height":"15px"});
  14.     }
  15.  
  16.     auto_resize();
  17.   });
  18.  
  19.   /* ウィンドウリサイズしたときの処理 */
  20.   $(window).resize(function()
  21.   {
  22.     auto_resize();
  23.   });
  24.  
  25.   /* ヘッダとコンテンツの高さをあわせる */
  26.   function auto_resize()
  27.   {
  28.     // ヘッダ部をマイナスした値がボディ(コンテンツ)部
  29.     var tmp_height = $(window).height() – $("#hed").height();
  30.  
  31.     $("#bdy").css("height", tmp_height);
  32.   }
  33. </script>
  34. </head>
  35. <body>
  36.  
  37.   <!−− ▼ヘッダ部 −−>
  38.   <div id="hed"></div>
  39.   
  40.   <!−− ▼ボディ(コンテンツ)部 −−>
  41.   <div id="bdy"></div>
  42.  
  43. </body>
  44. </html>

メモ

やるべきことは「ページを表示したときに高さを取得・設定」と「ウィンドウをリサイズしたときに高さを再取得・設定」の2つ。

さらに分割すると「ページを表示したとき」「ウィンドウをリサイズしたとき」「高さを取得・設定」の3種類。

高さを取得・設定

「ページを表示したとき」と「ウィンドウをリサイズしたとき」に実行する処理で、メインになるヤツ。
26~32行目の箇所。

「ウィンドウの高さ(tmp_height)」から「div#hedの高さ($(window).height())」の差分を「div#bdyの高さ($(“#hed”).height())」にする。

ページを表示したとき

8行目の「$(document).ready(function(){});」ってヤツ。

「div#hed」に対して高さを指定していないとIEで不思議なことになる。
高さを指定してるなら11~14行目は不要。
指定していないなら「IEの場合は適当な高さを指定」する必要あり。
「適当な高さ」を指定する際「overflow:auto;」とか指定すると求めているものにはならないのでCSSを調べながら頑張る。
指定していないなら小さいサイズを指定しておけばよさげ。
※根本的に原因は違うっぽい。※jquery IEで要素の高さの取得について

ウィンドウをリサイズしたとき

20~23行目の箇所。
何も考えずに「高さを取得・設定(auto_resize(){})」を実行する。

新着(ニュース関連以外)

2018-07-26
年賀状で「新春」とか書くけど・・・何故なんだろうと8月を目前にした今、疑問に思った。
2018-05-16
PHPで画像のヘッダ情報(?)の「Orientation」を元に画像回転させたい。
2018-03-05
Android Studioをインストール。エミュレータを軽くするトコまで終わらせたかったけど、挫折した。
2018-02-23
プッシュ通知について調べてた時にでてきたServiceWorker。そのServiceWorkerについてのメモ。
2017-12-13
jqueryで取得したDOM要素をオブジェクトじゃなくて、配列で受け取りたい