2008年12月26日金曜日

[ CSS ]スタイルシートで中央配置の段組を作る方法

今どきテーブルでごりごりサイトをデザインするのは時代遅れー、なんて言いますが。


わりと面倒なんですよねスタイルシート。
最近マシになってきましたが、ブラウザによって挙動違いますし。


スタイルシートはそれぞれの設定単体でできることが限られています。
複雑なことをしようとすると、いくつかのプロパティを組み合わせる必要があります。


わー面倒。


でもまあ、コツをつかめばそんなに面倒じゃないですよってことで。


今日は今時のサイトならどこでもやっている段組表示をやります。
で、ついでに段組表示を丸ごと中央に表示してみます。

段組の中央揃えは意外と取り上げられていないので。


とりあえず完成品のソースを。

ややこしそうなことやって見えますが、実際に表示されているのは下から10行分くらいですよ。



これをそのままどこかのHTMLファイルにコピペして、ブラウザで見てください。



上のスクリーンキャプチャ画像と同じような表示になっていると思います。


では説明。内容を順番に見ていきます。



上は、Web DeveloperというFirefoxブラウザの追加機能で表示した要素の解析です。
全部「DIV」要素だけで構成されているのが分かると思います。

1番外側のdivが、superWrapという名前で宣言されているDIV要素です。
これは、ただtext-alignをcenterに設定して、内容を中央揃えにするだけのものです。

ちなみにこのsuperWrap、FirefoxやSafariでは不要です。
実は、IE6のバグのために、mainFrameの体裁指定が言うことを聞かないんです。
まあ、IE8ではちゃんと動作するんじゃないかな。たぶん。

外側から2番目のdiv、mainFrame。こいつは、段組全体の体裁を指定しています。
幅が400px。text-alignをleftに戻して、内容の文字は左詰めにしています。

普通の段組ならこれだけでいいのですが。
段組全体を中央揃えするための設定がここに入っています。「margin: auto auto;」という設定です。
autoというのは「とりうる最大の」という意味だそうで。外側のdivで中央揃えにされている今の場合、左右両側に一杯の余白(マージン)を取ります。これで、段組全体が中央揃えされるのです。

あとの2つのdiv、leftFramerightFrameはその名の通り、段組の左側と右側のフレームです。
それぞれfloatプロパティにrightとleftを指定して、ぴったりmainFrameの枠に収まるように幅を調整しておきましょう。

これで、中央揃えの段組は完成です。