現在位置をハイライト表示
現在見ているページの位置情報を示すために、グローバルナビゲーションやローカルナビゲーションのリスト項目をハイライト表示させることがあります。他にも、カテゴリごとにカラーを変えたり、ページごとに背景を変えたりするなど、カテゴリやページごとに異なるスタイルを適用したい時があります。
このような時、専用のCSSファイルを作り、各ページのlink要素からそれぞれ読み込ませるという方法もありますが、あまり効率の良い方法とは言えません。あらかじめbody要素にIDやクラスを付けておき、それを手がかりにスタイルを振り分ければ、効率よくデザインを制御することが可能になります。
まず次の図6のように、body要素にid属性やclass属性を付けておきます。ここでは、カテゴリごとにクラスを、ページごとにIDを付けています。
ナビゲーション部分のコードでは、それぞれのリスト項目にIDを振っておきます。「id="now"」や「class="here"」などのコードをページごとに記述する方法もありますが、ナビゲーション部分のコードは全ページ共通とし、body要素のIDやクラスを手がかりにCSSを作り込む方がスマートです。
<body class="product"> ... <ul id="global-nav"> <li id="nav-home"><a href="...">ホーム</a></li> <li id="nav-product"><a href="...">製品情報</a></li> <li id="nav-solution"><a href="...">ソリューション</a></li> <li id="nav-support"><a href="...">サポート</a></li> <li id="nav-corp"><a href="...">会社概要</a></li> </ul>
CSSでは、子孫セレクタでbody要素のクラスとナビゲーションのリスト項目のIDを対応させるだけです。これで、そのカテゴリに属するページでは、ナビゲーション部分がハイライト表示されます。
body.home ul#gloval-nav li#nav-home a
body.product ul#gloval-nav li#nav-product a,
body.solution ul#gloval-nav li#nav-solution a,
body.support ul#gloval-nav li#nav-support a,
body.corp ul#gloval-nav li#nav-corp a{
background: url(here.gif) repeat-x left center;
}
CSSでロールオーバー効果を実装する
カーソルのホバー時に背景色や背景画像が入れ替わる「ロールオーバー効果」は、カーソルアクションを視覚的に伝えることのできる効果的な表現方法です。ロールオーバー効果を実装する方法はさまざまですが、それぞれにメリットやデメリットがあり、どのWebサイトにも使えるオールマイティーなテクニックは存在しません。それぞれのメリットやデメリットを踏まえたうえで、そのWebサイトに合った方法を取るようにしましょう。
「テキスト+backgroundプロパティ」でロールオーバー効果を実装する
「img要素」と「JavaScript」を使用してロールオーバー効果を実装する方法は、実務でも一般的なテクニックですが、デザインの変更時にサイト内のすべての(X)HTMLを修正する必要が出てくることがあります。
しかし、CSSを利用してロールオーバー効果を実装すれば、デザインの変更時にも、(X)HTMLに手を加える必要はなく、CSSを修正するだけで済みます。(X)HTML文書の汎用性が高まり、管理しやすくなるわけです。
CSSでロールオーバー効果を実装する最もシンプルな方法は、リンクテキストに背景色や背景画像を設定することです。リンク擬似クラスを利用して、通常のスタイルとカーソルがホバー時の背景のスタイルを切り替える仕組みです。次の例では、カーソルのホバー時とアクティブ時に、通常のスタイルと異なる背景画像を設定し、ロールオーバー効果を実装しています。
ul#global_nav a {
background: url(nav-off.gif) repeat-x left center;
}
ul#global_nav a:hover,
ul#global_nav a:active {
background: url(nav-on.gif) repeat-x left center;
}
「テキスト+backgroundプロパティ」でロールオーバーを実装する方法は、とてもシンプルなテクニックではありますが、画像のみでの表現に比べると、見た目にもシンプルです。Webサイトによっては、少々物足りないビジュアル表現かもしれません。そこで次節から、JavaScriptを使用せずに、CSSだけでグラフィカルな視覚表現を可能にする「画像置換」というテクニックを紹介しましょう。
この記事は参考になりましたか?
- クロスブラウザなレイアウトデザインテクニック連載記事一覧
-
- CSSでマルチカラムレイアウト
- ページレイアウトに使えるCSSプロパティ
- ナビゲーションの実践的なスタイリング
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 宮本麻矢(ミヤモト マヤ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア



