今回はフレームページをCSSによって擬似的に再現する方法についてですが、まずはフレームについて少し触れておきます。
以前は多く見られたフレームページですが、今ではわりと少なくなったように思います。
これにはフレームの利用に伴う弊害を嫌う傾向が強まり、その利点と比べて欠点が大きいと判断される風潮が背景にあると思います。
ですが、やはりフレームページのようにメニュー位置を固定して表示する方が閲覧しやすい場合もあります。
そこで、あくまで擬似的にですがCSSを工夫してフレームページを再現してみようと思います。
まず(X)HTMLを以下のように記述します。
・ <略> ・<body><div id="main"><h1>擬似フレームサンプル</h1><p>CSSで擬似フレームを再現。</p><h2 id="menu1">メニュー1見出し</h2><p>以下、本文続く…</p> ・ ・ ・</div><div id="navi"><ul><li><a href="#menu1" title="メニュー1">メニュー1</a></li><li><a href="#menu2" title="メニュー2">メニュー2</a></li><li><a href="#menu3" title="メニュー3">メニュー3</a></li></ul></div></body></html>コンテンツボックスとナビゲーションボックスにそれぞれidを付ける他は特にポイントとなる部分はありません。
各ボックスの記述順も、コンテンツが先でもナビゲーションが先でもかまいません。
次にCSSを以下のように指定します。
html { _overflow:hidden;}body { _height:100%; _overflow:hidden;}div#main { margin-left:200px; /* ナビゲーションボックスの幅の分マージンを取る */ height:100%; _overflow:auto;}div#navi { width:200px; height:100%; position:fixed; _position:absolute; top:0px; left:0px;}ポイントとなるのは強調部分の記述です。
以下、解説していきます。
順序が前後しますが、まずは19行目と20行目のposition設定について。
ここが今回一番のポイントとなる部分です。
まず「position:fixed」をサポートするブラウザ向けに19行目の指定を行い、ナビゲーションボックスを固定します。
次にWinIE用にアンダースコア・ハックを利用して絶対位置でナビゲーションボックスの位置設定を行います。
さらにコンテンツボックス(div#main)に、WinIE用の「overflow:auto」を指定します。(13行目)
後はWinIE用に体裁を整えるように色々と指定してやるだけです。
2行目と7行目の「overflow:hidden」は、スクロールバーの二重表示を回避する為に指定しておきます。
(Win IEではすでに13行目に指定した「overflow:auto」でスクロールバーが表示されるようになっています)
6行目と12行目の「height:100%」は、これを指定しないとWinIEではスクロールができなくなります。(スクロールバー自体が表示されません)
以上でCSSを用いた擬似フレームは完成しますが、18行目の「height:100%」がないと、ナビゲーションボックスが画面下部まで続かず、内容に合わせた高さになってしまいますので、背景などを使ってコンテンツとナビゲーションを区別させて表示させたい時には忘れずに指定した方がいいでしょう。
その他詳細については擬似フレームサンプルページをご覧下さい。
Copyright © 2006 よしゆき All Rights Reserved. Template designed by よしゆき Photo by 写真素材 [フォトライブラリー]