CodeZine(コードジン)

特集ページ一覧

ナビゲーションのマークアップとCSSデザイン

クロスブラウザなレイアウトデザインテクニック 第4回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/07/21 14:00

目次

リストのスタイリングの基本

 ナビゲーションをどの要素でマークアップすべきかといった明確な基準はありませんが、実務では、ul要素やol要素といったリスト関連の要素でマークアップするケースが多くあります。以下、リスト関連のスタイリングの基本テクニックを紹介します。

リストマーカーを確実に表示する

 リセットスタイルで、ul要素やol要素のマージンやパディングを0に設定している場合リストマーカーが表示されないことがあります。これはリストマーカーが消えているわけではなく、ボックスの外側に飛び出しているために起こる現象です。

 リストの左側の余白は、IE 6やIE 7では左マージンで制御されているのに対し、Firefox 3やSafari 3、IE 8などのブラウザでは左パディングで制御されているといった実装の違いがあります。そのため、「margin-left: 0」とすると、IE 6や IE 7でマーカーが表示されませんし、「padding-left: 0」とすると、Firefox 3やSafari 3、IE 8などでマーカーが表示されなくなります。

図3:margin-left:0 とした場合のFirefox 3(左)とIE 7(右)の表示例
図3:margin-left:0 とした場合のFirefox 3(左)とIE 7(右)の表示例
図4:padding-left:0 とした場合のFirefox 3(左)とIE 7(右)の表示例
図4:padding-left:0 とした場合のFirefox 3(左)とIE 7(右)の表示例

 リストマーカーが確実に表示されるように左側余白のスペースを調整するには、左マージンと左パディングの両方の値を指定します。ul要素の場合、マーカーを表示するには、最低限1emのスペースが必要ですから、margin-leftの値に1em以上を指定し、padding-leftの値に0を指定します。ol要素の場合には、「桁数+1em」のスペースを確保すると良いでしょう。例えば、「5.」のようにマーカーが1桁の場合には、2em分のスペースが必要になりますから、margin-leftの値に2em以上を指定し、padding-leftの値に0を指定します。

[リスト5]CSSソース:マーカー表示分のスペースを確保してスタイルをリセットした例
ul {
  margin: 0 0 0 1em; /* 左マージンのみ1em */
  padding: 0;  /* 左パディングを含め、すべて0 */
}
ol {
  margin: 0 0 0 2em; /* 左マージンのみ2em */
  padding: 0;  /* 左パディングを含め、すべて0 */
}
図5:margin-leftでマーカー表示分のスペースを確保し、padding-left:0 とした場合のFirefox 3(左)とIE 7(右)の表示例
図5:margin-leftでマーカー表示分のスペースを確保し、padding-left:0 とした場合のFirefox 3(左)とIE 7(右)の表示例

マーカーを画像で表示する

 list-style-imageプロパティでは、リストマーカーとして使用する画像を指定することができますが、このプロパティを使用して細かな位置調整を行うのは難しく、リスト項目のフォントサイズや行の高さによっては、マーカーの位置がずれてしまうことがあります。この場合、画像側の幅や高さなどを変更しながら位置調整を行うことになり、あまりスマートな方法とは言えません。

図6:「list-style-image:」で指定してマーカーがずれてしまった例
図6:「list-style-image:」で指定してマーカーがずれてしまった例

 このようなアイコン的な表現をしたい場合には、backgroundプロパティを利用して、背景としてマーカー画像を指定するという方法があります。具体的にはまず、「list-style-type: none」と指定して、デフォルトで表示されるマーカー(disc)を表示しないようにリセットします。次にbackgroundプロパティで、li要素の背景としてマーカー画像を指定し、左に一度だけ表示するよう指定します。さらに、リスト項目とマーカー画像が重ならないよう、padding-leftプロパティを指定してマーカー画像の表示スペースを確保します。この方法であればピクセル単位での微妙な位置調整も可能になります。

[リスト6]マーカー画像を背景として指定
ul li {
  list-style-type: none;  /* リストマーカーを表示しない */
  background: url("arrow.gif") no-repeat left center; /* マーカー画像を左から0%、上から50%の位置に、一度だけ表示 */
  padding-left: 15px; /* マーカー画像の表示スペースを確保 */
}
図7:backgroundプロパティでマーカー画像を指定した例
図7:backgroundプロパティでマーカー画像を指定した例

  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:クロスブラウザなレイアウトデザインテクニック

著者プロフィール

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

  • WINGSプロジェクト 宮本麻矢(ミヤモト マヤ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5