CSS3(草案)では複数の
背景画像を表示出来るようになるようですが、現在のCSS2.1ではbodyに対して
背景画像を表示する位置は、全体または任意の位置、縦一列、横一列の内いずれか
1つしか選択出来ません。
右上と左下や左右両側に縦一列等2つ以上の位置に表示させたい場合はどの様に
すれば良いでしょう?
背景画像はbody要素以外にも設定する事が出来ます。そこで、div要素にも背景画像を
設定し、body開始タグの直後に div開始タグ、body終了タグの直前で div終了タグを
置いて、bodyのmarginとpaddingはゼロ、このdivのpaddingを適当に調整して、
それぞれに背景画像を設定します。
次のソースは、このページのように左右縦一列に背景画像を設定した例ですが、 背景画像をスクロールさせる場合です。
※ 無料レンタルなどのホームページスペースで、ページ上部や下部に広告が 自動挿入される場合、広告が正しく表示されない可能性があります。
では、このページ同様にスクロールさせず固定とする場合はどの様にすれば良い
でしょう?
そうです。 scroll を fixed にすれば良い事は容易に分かりますね。
しかし、残念ながらIEでは fixed
にしても divに設定した背景がスクロールしてしまいます。
(勿論IE以外のブラウザでは正常に固定となります)
仕方がないので IEだけ見捨てる事にします。という訳にも行かないので
IEだけ処理を分岐させる事にします。
次の様に書くとIE以外のブラウザにはコメントアウトとして認識されます。
この条件分岐コメントを利用してIE6以下はdivに overflow: auto; でスクロールバーを 表示させ、bodyは overflow: hidden; でスクロールバーを非表示とする事で、 どのブラウザでも固定となりました。
※ 標準準拠モードには対応していません。(IE6以上も他のブラウザ同様 padding
の内側が要素の幅、高さとなるため)
※ 3枚以上はdiv要素の内側に更にdiv要素(勿論idは変えて)を追加していきますが、
padding 及びIEの overflow:auto; のスタイルは一番内側となるdiv要素にのみ指定
します。また、右側に配置する背景を一番内側のdiv要素に貼り付けるようにします。
(IEの各divの幅は100%ですのでスクロールバーが表示されると一番内側のdiv以外は
右がずれるため)
※ 無料レンタルなどのホームページスペースで、ページ上部や下部に広告が自動挿入
される場合、広告が正しく表示されない可能性があります。
※ レイアウトで幅が打ち決めされたページ(ブラウザ画面を縮めると横スクロールが
発生するページ)では使用出来ません。そのようなページでは幅は決まっていますから
背景画像を一枚に合成して使用するなどの方が適当です。
2007/07/29 条件分岐コメントをIE7に対応させ、<body scroll="no"> を
body { overflow: hidden; } に変更しました。
次のスクリプトはbody要素とページ内容の間に id="bg" のdiv要素を挿入するものです。 広告の自動挿入されるようなレンタルホームページスペースなどでは有効となるかも 知れません。(<div id="bg">及び</div>の代りに使用)