CSSレイアウトの作業効率を上げるために
- おかしいな?と思ったときは検証ツール
- コードを検証ツールにかけることで、間違い箇所を見つけるのが簡単に出来ます。(W3C CSS 検証サービス)
- IEに合わせて作った後で他のブラウザでの表示を調整はNG!
- 残念ながらIEはCSS解釈のバグが多いブラウザです。CSSを正しく解釈するブラウザ(FirefoxやOperaなど)に合わせてCSSを書き、その後IE向けに調整する方が効率的かも。
- 適用したいスタイルが存在するか確認する
- 公式仕様には含まれない、ブラウザ固有のCSS拡張機能も存在します。そのようなスタイルを指定した場合、一部のブラウザでは思ったとおりのスタイルにすることが出来ません。
- リンク擬似クラスの指定順序は「LoVe HA」と覚えよう
- リンク疑似クラスは、必ずlink、visited、hover、activeの順序で指定する。このほかの順序では一貫して動作しない。
- 画像のパスをシングル・クオーテーションマークで囲まない
- 背景画像を設定する時、パスを引用符で囲まないよう注意。MacのIE5をつっかえさせるおそれがあります。
CSSレイアウトでよく発生する問題とその解決法
widthを指定するとブラウザによって表示が崩れる
- widthを指定したときに同時にpaddingやborderを指定するのは避ける
- CSS1/CSS2ではボックスの幅を算出するときにパディングやボーダーのサイズは除外される。しかしWinIE(互換モード)ではこれらを含めて幅や高さを算出する。
- 合計100%になるwidthの指定は避ける
- 誤った四捨五入によって50%+50%の結果が100.1%のようになり、一部のブラウザでのレイアウトが崩れてしまうことが。50%を49%に下げてみるなどの配慮が必要。
floatを使うと表示が崩れる
- 親ボックスに背景を指定し、子ボックスをfloatさせると親ボックスの背景が表示されない
- floatに依存したレイアウトをする場合、floatを確実にclearするようにしましょう。clearfixという方法があります。
- floatに内包されたコンテンツが背景画像が表示されないなど表示が不安定になる
- Peekaboo Bugといいます。
- floatするコンテンツの親要素にwidthまたはheightで値を設定する
- floatするコンテンツに含まれる要素に position: relative を指定する
その他詳細なCSSバグについてはCSSバグリスト@CSSバグ辞典スレッドを参照。