勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

CSSで1つの要素に複数classを設定して画像を入れ替える方法

   2024/02/25  CSS

メニューリンクで通常時の画像、マウスオーバー時の画像、アクティブ時の画像をそれぞれCSSで指定したかった。通常時とマウスオーバー時は普通のbackground指定とhoverでいけたんだけど、アクティブ時に同一要素に複数classをつけるのはよいものの、どうCSSで指定したらよいのか分からなかった。以下に対応方法をメモ。

 

ソースコード

<style>
#menu .test, #menu .test a { /* 通常時 */
    background: url("test.jpg") no-repeat;
}
#menu .test.active, #menu .test.active a { /* アクティブ時。.test.activeはスペースをあけずにつなげて書く*/
    background: url("test_active.jpg") no-repeat;
}
#menu .test a:hover { /* マウスオーバー時 */
    background-image: url("test_hover.jpg") no-repeat;
}
</style>
<div id="menu">
    <div class="test active">
        <a href="./link.html">link</a>
    </div>
</div>

 

その他

CSSパスを指定する際に半角スペースをあけると下位要素につながるのとは別に、つなげて書くと絞込み指定ができるみたい。知らんかった。

 - CSS

  関連記事

CSSのdisplayについて

よく使うdisplayだけれども、noneとblock以外で 初めて使うことがあ ...

CSSでfloatやmargin&widthは使わずにブロック要素の中央寄せ・右寄せする方法

CSSでブロック要素を中央寄せする場合はwidth指定しつつ「margin:0 ...

Material Design LiteでiPhoneのみリンク(ボタン)をクリックしても動作しない場合の対応方法

最近サイト内のツールページ等をMaterial Design Liteで作ってい ...

jQueryの日付&時間のピッカー(bootstrap-datetimepicker)について

日付のピッカーはよく見るけど、時間のピッカーはあまり見ないので、普通のセレクトメ ...

セレクトメニュー(プルダウン)をdisplay:none;指定してもiPhoneのみ非表示にならない問題の対応方法

セレクトメニュー(プルダウン)に対してdisplay:none;指定したりjQu ...