基本的な段組みレイアウトが出来るようになった後に、最初にぶち当たる壁だと思われる、サイドバーの繰り返し。
コレって、テーブルレイアウトだと容易に実現出来るのですが、通常CSSで段組みをした場合、サイドバーがメインコンテンツより短いと途中で背景が途切れてしまいます。
ソレだと随分いけてないので、ちゃんとメインコンテンツの内容にあわせて表示するようにして上げます。
まずは、サンプルをご覧下さいませ。
サンプル:
http://css-happylife.com/template/02/持ち帰り用:
http://css-happylife.com/template/02/02.zip文字サイズを変更して頂ければ、内容にあわせてサイドバーが伸び縮みするのが分かると思います。
---- こっから続き
んでは、どーやって繰り返しているのかの説明をば。
サンプルは、メインコンテンツがある #left_container と、サイドバーの #right_container で構成されていて、ソレを囲む為の#main_containerが御座います。
何となくサイドバーに背景を表示させようと思ったら、#right_container に背景指定し、repeat-yで縦に繰り返しとheight:100%とかでいけちゃいそうですが、コレだと残念ながら繰り返してくれません。
ソコでちゃんと背景画像を繰り返してもらう為に、#left_containerと#right_containerを囲っている#main_containerが大活躍しちゃいます。
div#main_container {
background:url(img/bg_side.gif) repeat-y right top;
}
↑こんな感じで、#main_containerにサイドバー用の背景画像を指定してあげます。
すると、あら不思議・・・繰り返さない!
これは、floatしているdivが#main_containerの中に有る為に起こります。
その為、親要素である#main_containerにもfloatを指定してあげます。
div#main_container {
float:left;
background:url(img/bg_side.gif) repeat-y right top;
}
↑こんな感じで。
コレでばっちり背景が繰り返されます。
なぜ親にfloatを指定する事で背景が繰り返されるかといいますと、floatってのは浮いたような状態になっています。
浮いたような状態というのは、通常の流し込みのルールから外された浮いた存在という意味での浮いたような状態ですが、イメージとして実際に浮いていると考えていただくと分かり易いと思います。
浮いているってことは、floatを指定されたいわゆるフロートボックスの親要素にあたる#main_containerは子要素(フロートボックス)が無いものとして解釈します。子要素が無いんだから、高さが出るはずもありません。
つまり、背景が繰り返されなくなってしまう。
仮に高さが完全に固定のサイトだったら、heightを指定すればその高さ分繰り返しますが、融通がきかな過ぎてあまりにも不便です。
そこでフロートボックスの親要素も同様のルールを適用させる事で、解決するという訳です。
floatを使う事で、ボックスモデルの解釈(marginとか)も変わってしまうので、そのあたりも注意すると良いです。
別の方法として、overflow:autoと指定して上げる事でも繰り返し表示されます。
この方法で繰り返される理由は、まぁ仕様でそう定められているからという解釈でOKです。
もう一つ、有名な方法でclearfixってのがあります。
詳細は、http://css-happylife.com/log/css-hack/000078.shtmlをば。
コレで基本的な背景の繰り返しはOKですが、留意点が有ります。
IEだと、『背景色が指定された要素内にフロートがあるときに要素内の文字が消える』というバグがあるのですが、背景色を指定している場合はwidthプロパティを明示してあげる事で回避できます。
サンプルでは横幅指定していませんが、横幅が決まっているサイトの場合は基本的に指定しておいた方が無難です。
後、IEだと横幅指定すると繰り返し表示されるのですが、コレが罠になる可能性の一つだなぁーと思います。
横幅指定だけだとIEのみが繰り返されるので、「アレFirefoxで繰り返さない。」と言った状態に陥る可能性が有るので要注意です。
必ず親要素にもfloatを指定してあげましょう。
あ、持ち帰り用のテンプレはご自由に改変して試して見て下さいませ。
以上、お疲れ様でしたっ!ボク。
---
2007/07/03にちょこちょこ説明文修正。











comment [5]
1 - yum さん
持ち帰り用をダウンロードさせていただきました。
ありがとうございます。
なんだか壁がたくさんで大変なのですが
このサイトを参考にがんばります。
2007年1月28日 15:37
2 - hira@管理人 さん
>yumさん
はじめまして
DLありがとうございます。
ソコソコ古いデータなんで、ちょっとお恥ずかしい限りですが、参考にしていただければ幸いです。
2007年1月29日 09:12
3 - SAVADA さん
fire foxで2段組にした時に、内容量によって背景色が途中で途切れてしまうことに悩んでおり、こちらにたどり着きました。
お蔭さまですっきりと解決いたしました。
今後とも勉強させていただきます。
ありがとうございました。
URL|2007年4月10日 12:09
4 - ひまわり さん
私もSAVADA さん同様、悩んでいました。
助かりました。ありがとうございます。
2008年8月 7日 16:24
5 - 氷 さん
初めまして、このような時間にすみません。
ご質問したい事があるのですが、お時間がございましたら
お教え頂ければ幸いです。
サイドバーの背景について悩んでおり、
検索でこちらの記事を拝見してから
無事サイドバーを最後まで表示させる事が出来ました。
ありがとうございます。
ただ、記事数多いトップページを見る分には
綺麗にサイドバーは最後まで表示されるのですが、
記事が1件しかなく、また追記を折りたたんでいる記事がある
カテゴリーを見た時に、
サイドバーが長く、記事部分が(折りたたまれていて)短いため、
短い記事部分に合わせてサイドバーが途中で切れてしまうのです。
折りたたみをクリックして画面縦幅いっぱいに記事が表示されれば
横のサイドバーもそれに合わせて最後まで表示されるのですが、
追記をクリックするまでに途切れているサイドバーが
気になって仕方ありません。
これに対して何か対処法がありましたら
是非お教え願えると嬉しいです。
お時間ありましたらで結構ですので、どうか宜しくお願い致します。
2008年12月 2日 05:12