Arugoworks ホーム > ブログトップ > Silverlight | プログラム > ヘッダとフッタを固定して、コンテンツエリアにSilverlightのオブジェクトを埋め込む

ヘッダとフッタを固定して、コンテンツエリアにSilverlightのオブジェクトを埋め込む

先日から、amacalNexTock の HTML版の画面を固定のヘッダーとフッターがつくような形式に変更しました。具体的にはヘッダーとフッターが固定で表示されていて、その中のコンテンツエリア全体にSilverlightのオブジェクトが表示されるものです。ブラウザの領域のサイズにおおじてコンテンツエリアが調整されます。言葉では説明しにくいので、実際の動きを見てもらうのが一番ですが、絵で説明するとこんな感じです。

image

もともと、HTML/CSS/JavaScript は素人なので、方法がわからなかったのですが、先日、JavaScript を使う必要があって、そのときにサイズの設定方法がわかったので、下記のコードで対応してみました。

        window.onresize = ResizeSLObject;
        window.onload = ResizeSLObject;
        function ResizeSLObject() {
            o = document.getElementById('silverlightControlHost');
            o.style.height = document.body.clientHeight - 185;
        }

ちなみに、“185” は、ヘッダーとフッターの高さを足したものです。

まぁ、それなりに動いていたので、細かい問題は無視していたのですが、実は、このコード、IE以外のFirefox, Safari, Google Chromeではまったく動かないことが判明。

で、あーだこーだといろいろ検索したり実験したりして、修正をかけたのが次のコード。

window.onresize = ResizeSLObject;
window.onload = ResizeSLObject;
function ResizeSLObject() {
    var o = document.getElementById('silverlightControlHost');
    var ft = document.getElementById('footer');
    var hd = document.getElementById('header');

    var h_header = hd.clientHeight;
    var h_footer = ft.clientHeight;
    var margin = h_header + h_footer;

    var docHeight;

    if (document.compatMode == "CSS1Compat") {
        docHeight = document.documentElement.clientHeight;
    } else if (document.compatMode == "BackCompat") {
        docHeight = document.body.clientHeight;
    }

    var objHeight = Math.max(docHeight - margin, 300);
    o.style.height = objHeight + "px";
}

ポイントは、次の2つ。

  • ブラウザの表示領域を取得するのに、document.body.clientHeight ではなく、document.documentElement.clientHeightを使うこと (今回はモードで区別しています)
  • オブジェクトの高さを設定するために、object.style.height を設定する場合は、”100px” のように、”px”を忘れないようにすること。

新しいコードは、メニューが2行になっても対応できますし、クライアントエリアは最低でも300px が必要なように設定しました。

関連する投稿

lCuOLO uOLOEɂقuO

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加



コメント:0

コメント入力
情報を記憶

トラックバック:0

トラックバックURL
http://www.arugoworks.net/wordpress/wp-trackback.php?p=434
この記事へのトラックバック
ヘッダとフッタを固定して、コンテンツエリアにSilverlightのオブジェクトを埋め込む from Arugoworksの開発日記

Arugoworks ホーム > ブログトップ > Silverlight | プログラム > ヘッダとフッタを固定して、コンテンツエリアにSilverlightのオブジェクトを埋め込む

スポンサーリンク
 デル株式会社 Sony Style(ソニースタイル) リンクシェア アフィリエイト紹介プログラム
カテゴリー
アーカイブ
タグクラウド
おすすめリンク
  • Amazon.co.jp
    もはや説明の必要がない超有名オンラインショップ。いろいろお世話になっています。
  • Wordpress.org
    このブログはWordpressで動いています。
  • wp.vicuna
    現在のブログはwp.vicunaをカスタマイズして利用しています。
  • 窓の杜
    本家Arugoworksで提供しているソフトなども紹介してもらっています。
  • クーペとクーペ
    趣味のページです。
スポンサーリンク
あわせて読みたいブログパーツ

トップへ戻る