CSSで段組(2)

段組をスタイルシートで作ってみよう、という記事なんですが、前回のものには大事なことを書き忘れていました。

Css_dangumi_02

3つの段のdiv要素にfloatを指定するのですが、その下に来る、すなわち段組ではない要素にはclearを指定してあげねば回り込みが続いたままになってしまいます。下に続く要素のIDがfootとすれば、こうなります。

div#foot {
  width: 960px;
  clear: both;
}

clearのパラメータにbothを指定していますので、左右の回り込みを解除します。

さてここで、前日の課題、「段の高さが異なると背景や境界が不揃いになる」という問題の解決ですが、いろいろ調べてみましたところ、

短くなる段の背景に合わせた高さ1pxのグラフィックを用意して、それをwrapperの背景に指定する。

といったものが多かったです。どれが短くなるかわかっている、2段である、という場合にはよいのですが、3段になると使えません。3段分の背景グラフィックを用意するという方法もありそうですが、あまりこのような力業は好きではありません。

絶対に、グラフィックなんぞを使わずに済む方法があるはずだ!と思ったらありました。反面、非常にトリッキーなのですが、実際にやってみましたらあっけなくできましたので、書いておきます。

3つの段に相当するdiv要素に、以下のように付け加えます。

div#left, div#center, div#right {
    padding-bottom: 32768px;
    margin-bottom: -32768px;
}

下端のパディングを最大に、そして下端の境界をマイナス方向に最大に、という指定なのですが、これがどのような効果をもたらすかはわかりません。ですが実際にやってみると、それぞれの段に指定した背景や境界線が、最も高い段に合わせて伸びてくれます。これは具合がよいです。

ですが!冒頭の画面のように、段組の下に続く要素に境界線が突き出て見えてしまいます。これはどうも、上記のスタイル設定の影響でしょうが、これでは困ります。というか、こうならないために、解決方法はきちんと用意されていました。

wrapperにoverflowを指定します。

    overflow: hidden;

溢れた分を隠す、という指定ですね。これで消えます。

ほかにも何か設定が必要だったような気がするのですが、とりあえずこれで問題なく表示できています。見る側から見れば、何のメリットがあるの?という話ですが、ちょっとしたこだわりと言うことで…。

コメント