質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
hover

これは、HTMLの 擬似クラス[hover]に関するタグです。Hoverは与えられた要素へマウスカーソルを置くことを意味します。また、タッチ可能なデバイスでユーザーが要素へタッチすることをHoverと呼ぶ場合もあります。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

3回答

3444閲覧

css セレクタ優先度: 要素タグ (hover) と class を併用したい。

BetterEveryday

総合スコア19

hover

これは、HTMLの 擬似クラス[hover]に関するタグです。Hoverは与えられた要素へマウスカーソルを置くことを意味します。また、タッチ可能なデバイスでユーザーが要素へタッチすることをHoverと呼ぶ場合もあります。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2020/04/19 10:06

編集2020/04/22 05:12

前提・実現したいこと

要素 a タグ (疑似クラス:hover) と class セレクタのスタイルを両立する。

発生している問題・エラーメッセージ

a タグ内に class セレクタがある場合、hover が効かないことがある。

(セレクタの優先順序によりクラスが優先されているのか、
↓ソースの「English」には hover が効くが、
2 つめの span タグ 「日本語」には hover が効かない。)

class セレクタ項目 n 番目class 名content要素タグ疑似クラス hover (フォント色)
1”en"「English」効く (赤)
2"caption"「日本語」効かない (グレー)

該当のソースコード

CSS

1<style> 2 .en { font-weight:Bold;} 3 .caption { font-size:9px; color:grey;} 4 a { text-decoration:none; color:black;} 5 a:link { color:#000; text-decoration:none; } 6 a:visited { color:#000; } 7 a:hover { color:#cc141c; } 8 a:active { color:#cc141c; !Important;} 9</style>

html

1<a href="#"> 2 <span class="en">English</span><br> 3 <span class="caption">日本語</span> 4</a>

試したこと

  1. !Important;
  2. 記述順序

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

効かない理由は、maisumakunさんの回答で指摘ある通りだと。

対策としては下記のように a:hover span に設定するようにすればいいでしょう。

css

1a:hover span { color:#cc141c; }

投稿2020/04/19 10:29

hatena19

総合スコア34075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BetterEveryday

2020/04/19 11:00

hatena19 さま、 コードを回答いただきましてどうもありがとうございます。 昨日から悩んでいましたので、たいへん助かりました。
guest

0

こうすれば良いのでは。
a span:hover { color:#cc141c; }

追記
少し勘違いをしました。この回答は投稿者の意図するものではなさそうです。

投稿2020/04/19 10:13

編集2020/04/19 10:28
soliste16

総合スコア757

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BetterEveryday

2020/04/19 10:59

soliste16 さま、 コードを回答いただきまして、また質問意図まで 考慮いただきまして、どうもありがとうございます。 回答いただいた内容で質問した内容が解消できました。 (訂正いただいたように、質問はしていませんでしたが、 「hover 対象を広げたい。(文字のみでなく)」という疑問もありましたので、) 両方解消できた hatena19 さまを回答をベストアンサーにしようと思います。)
guest

0

(セレクタの優先順序によりクラスが優先されているのか、

いえ、.captionに直接スタイルが指定されている場合、親要素から継承された値より優先されます。これは変えられません。

投稿2020/04/19 10:09

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BetterEveryday

2020/04/19 10:58

maisumakun さま、 早々に回答いただきましてどうもありがとうございます。 caption タグがあるため、クラス名に「caption」を使用できない、と理解しました。 (初歩的な質問でお手数をお掛けしまして申し訳ございません。)
maisumakun

2020/04/19 10:59

> caption タグがあるため、クラス名に「caption」を使用できない、と理解しました。 いえ、全く違います。
BetterEveryday

2020/04/19 11:11

再回答ありがとうございます。 (実はお知らせいただいた「caption 直接指定」でキーワード検索してみましたが、 参考になりそうな情報を見つけられずにいるところです。。)
maisumakun

2020/04/19 11:12

「caption」という名前は本質的ではありません。「継承」がキーワードです。
think49

2020/04/19 11:22

https://triple-underscore.github.io/css-cascade-ja.html#inheriting > 一部のプロパティは、そのプロパティ定義表にて, 継承プロパティ ( inherited property )であるものと定義される。 これは、カスケード値が無いときは,その値が継承により決定されることを意味する。 他の方の回答も「継承を使用しないセレクタ」で解決しており、根本的な原則は同じです。
BetterEveryday

2020/04/19 12:05

think49 さま、 教科書を 2 種類もお知らせいただきましてどうもありがとうございます。 2 番目の要素に親要素を適用させたい場合は詳細度で勝つ必要がある、と理解しました。
think49

2020/04/19 13:47 編集

@BetterEveryday さん > 2 番目の要素に親要素を適用させたい場合は詳細度で勝つ必要がある、と理解しました。 「自らが立てた仮説」を実証するコード」を書いてみてください。 https://jsfiddle.net/nfuj10td/1/ 期待通りの結果になりますか。 再三の指摘ですが、キーワードは「継承」です。 maisumakun さんの回答「いえ、.captionに直接スタイルが指定されている場合、親要素から継承された値より優先されます。」 私が紹介した引用文「これは、カスケード値が無いときは,その値が継承により決定されることを意味する。」 再読して下さい。
BetterEveryday

2020/04/20 00:26

think49 さま、 再度おふたりの言葉を参照いただいたことにより、 caption クラスでは色指定があるから、a.hover の色指定は効かない (上書きされる)、 en クラスでは色指定がないから、a.hover の色指定が効く(上書きされない)こと、 ちんぷんかんぷんだった、 maisumakun さまの「.captionに直接スタイルが指定されている場合、親要素から継承された値より優先される」 think49 さまの「カスケード値が無いときは,その値が継承により決定される」を理解できました。 -------------------------------------------------------------------------------- さらに、私のために検証コードまで作成いただきましてどうもありがとうございます。 think49 さまのコードにリンクなしの li タグや li:hover スタイルを追加して、やっと以下を理解できました。 「a タグの親は li であり」、 スタイルに継承を指定すると、hover のスタイルは li:hover スタイルに依存する、 スタイルに継承を指定しないと、hover のスタイルは a:hover スタイルに依存する。 この継承の理解が、一昨日から残る他の css 悩みの解消にも役立てられたら、という想いで 今日も取り組んでいこうと思います。 私の理解のために貴重なお時間とお気持ちをいただきまして本当にどうもありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問