Web標準普及プロジェクト

ul要素とol要素のブラウザごとの違い

リストを作るための要素として、ul要素とol要素があります。 これらは共通の構文で子要素にはli要素のみを持ちます。 このリストの表示はパッと見ではMozilla、Opera7、Windows版Internet Explorerで差異が無い様に見えるのですが、 実際にブラウザのデフォルトスタイルシートはかなり違っています。 その違いと注意点について紹介します。

リスト要素のmarginを使ってli要素を配置するブラウザ

Opera7とWindows版Internet Explorerはリスト要素(ul要素とol要素)にmarginを指定しています。 推測されるデフォルトスタイルシートを以下に示します。

Opera7.2

スタイル(推測)
ul,ol{
    margin: 18px 0 0 40px;
    padding: 0;
}
li{
    margin: 0;
}
スクリーンショット

赤い枠線がリスト要素、青い枠線がリストアイテム。

Opera7でul、ol、li要素に枠線を付けたスクリーンショット

ただし、Opera7.0xではli要素はmargin-top: 5px;となっていました。 注意してください。

Windows版Internet Explorer6

スタイル(推測)
ul,ol{
    margin: 18px 0 18px 40px;
    padding: 0;
}
li{
    margin: 0;
}
スクリーンショット

赤い枠線がリスト要素、青い枠線がリストアイテム。

Windows版Internet Explorer6でul、ol、li要素に枠線を付けたスクリーンショット

リスト要素のpaddingを使ってli要素を配置するブラウザ

上記とは逆にMozillaではリスト要素のpaddingでli要素をインデントしています。

Mozilla

スタイル
ul,ol{
    margin: 1em 0 1em 0;
    padding-left: 40px;
}
li{
    margin: 0;
}
スクリーンショット

赤い枠線がリスト要素、青い枠線がリストアイテム。

Mozillaでul、ol、li要素に枠線を付けたスクリーンショット

このスタイルは次の様に問題が解決されるため、 Opera7、Windows版Internet Explorer6のスタイルよりも使いやすいものです。

  • リストアイテムのマーカーがリスト要素の背景の上に表示される
  • リストアイテムのマーカーとリスト要素のボーダーが重ならずに表示される

まとめ

これらの事実はやはりブラウザ間での見た目の互換性に問題があると言えます。

また、ここで検証していないWebブラウザではひょっとするとこれらのスタイルとも違って、 li要素のマージンでli要素を配置しているかもしれません。

しかしこの見た目の問題は大きな問題ではありません。 なぜなら、ここで紹介したいずれかのスタイルをあなたのWebサイトのスタイルシートに記述するだけで、 全てのブラウザでの見た目が統一されるためです。

ただし、Mozillaのスタイルを使用する場合は注意が必要です。 Mozillaのスタイルではli要素のマーカーがリスト要素のpadding領域上に配置されます。 そのため、overflow: hidden;をリスト要素に指定するとマーカーが消えてしまいます。 普段はあまり問題にならないと思いますが、頭の片隅に置いておいてください。