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

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

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

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

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

Q&A

解決済

3回答

4238閲覧

複数クラスを持つ要素のhoverについて

xminimx

総合スコア53

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

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

0グッド

0クリップ

投稿2019/08/05 06:17

編集2019/08/06 01:46

html

1<div> 2<p>〜〜〜</p> 3<div class="btn small_btn red_btn" id="hover">ホバーで色を変えたいボタン</div> 4</div>

上記のコードのボタンを、ホバーで色を変えたいのですがうまくいきません。

css

1div.red_btn { 2 padding: 10px 3} 4div .btn{ 5 background-color: #fff; 6 /*padding: 16px 0;*/無効化 7 text-align: center; 8 color: #000; 9 border-radius: 3em; 10 max-width: 200px; 11} 12.small_btn { 13 margin-top: 20px!important; 14} 15div#hover:hover div.btn{ 16 background-color: blue; 17 color: #fff; 18 border: solid 2px vlue; 19 padding: 20px 40px; 20 padding-top: 10px; 21}

以上のようなCSSをかき、開発者ツールのホバーで試したら問題なく色が変わるのですが、
ブラウザ上ではうまくいきません。(開発者ツールとブラウザの動作が違うことはよくあることなのでしょうか。)
解決に向け、アドバイスをいただきたいです。
また、擬似要素は複数のクラスを持つ要素には指定はできないのでしょうか?

8/7追記

css

1#hover:hover{ 2 background-color: blue!important; 3 color: #fff!important; 4 border: solid 2px blue!important; 5 padding: 20px 40px!important; 6 padding-top: 10px!important; 7}

ご指摘いただいた通り、importantをつけてみました。
が、先日と同様開発者ツールでしかhoverが確認できない状態です。

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

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

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

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

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

mix-peach

2019/08/05 06:32 編集

提示のHTMLには、cssで指定している「div .btn」 も、「div#hover:hover div.btn」も存在しませんが。。。 HTMLが間違っている(提示で省略しただけ?)のか、そもそもcssの指定の仕方が間違っているのか・・・
xminimx

2019/08/05 06:34

htmlコードで省略していた部分を追記しました。ご確認ください。
mix-peach

2019/08/05 08:49

提示のHTMLとCSSであれば、他の方の回答通りの修正で、私の手元でも青くなります。 もしスタイルが競合して負けているのであれば、他のcssの情報が必要ですね。。。 ちなみに、xminimxさんが書かれたhoverが利かない、とのことですが、それらが利いていない状態でhoverすると変わるスタイルはあるのでしょうか? それから、確認している開発者ツールに、何を利用されているのかも記載いただくと良いかもしれません。
xminimx

2019/08/05 10:28

一番上の<div>にfloat:right;をかけているのですがそれの影響でしょうか。 float: right; display: inline-block; この2つのスタイルをかけています。 他の要素にかけたhoverは問題なく効くのですが… 開発者ツールはgooglechromeを使用しています。
mix-peach

2019/08/06 01:12

floatとか、displayとかは、あんまり関係なさそうですねぇ(手元で追加して確認しましたが、特に影響はなかったです) あとは、他の要素にかけたhoverが効くならやはり、該当部分のcssの記述がミスっている可能性(スペルミスとか全角スペースが紛れてるとか)が高いかも?って話だと思うので、div#hover:hover{中身含めて全部} を、一度まるっと書き直してみてはどうでしょうか(satsh12stさんの回答から、コピペすると良いかもですネ) それでもダメだったら、mts10806さんの提案されている「!important」の追記も試してみてください。
guest

回答3

0

自己解決

二日に渡り様々なアドバイスをいただき、ありがとうございました。
お恥ずかしいのですが非常に初歩的な間違いをしておりました。
更に親要素を確認していったところ、全体の親要素としている<class="container">に
何かの拍子でz-index:200;を設定しており、そのせいで効かなかったようです。
ですがタグの閉じ忘れや綴り間違い、また配下要素について見直す良い機会でした。
若輩者ですが、またご指導・ご鞭撻のほどよろしくお願いいたします。

投稿2019/08/06 01:54

xminimx

総合スコア53

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

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

0

div#hover と div.btn を併せ持つ要素がカーソルに触れた時、色を変えたいということですよね?
xminix様のコードですと

CSS

1div#hover:hover div.btn { 2 () 3}

となっていますが、このコードでは、div#hoverをホバーした時の 子孫要素 div.btnという意味合いになってしまいます。

併せ持ちの意味合いandを持たせたいのであれば

CSS

1div#hover:hover.btn { 2 () 3}

このようにする必要があるかと思います

追記:
手前の環境では問題を再現できませんでしたので、一部手直ししたコードを貼っておきます。コピペで改善すれば自分のコードと見比べてみてください。

CSS

1div.red_btn { 2 padding: 10px 3} 4div.btn{ 5 background-color: #fff; 6 /*padding: 16px 0;*/無効化 7 text-align: center; 8 color: #000; 9 border-radius: 3em; 10 max-width: 200px; 11} 12.small_btn { 13 margin-top: 20px!important; 14} 15div#hover:hover.btn { 16 background-color: blue; 17 color: #fff; 18 border: solid 2px blue; 19 padding: 20px 40px; 20 padding-top: 10px; 21}

直した場所について少しだけ書いておきます。

CSS

1元コード 2 div .btn {} 3現コード 4 div.btn {}

元のコードでは、divの子孫要素.btnになってしまいます。

CSS

1元コード 2 div#hover:hover.btn { 3 border: solid 2px vlue; 4 } 5現コード 6 div#hover:hover.btn { 7 border: solid 2px blue; 8}

シンプルにスペルミスです。

経験上、「デベロッパーツールがおかしい!」と思っても、大抵の場合ちょっとしたスペルミスや考え違いです。まずツールの不具合は考えにくいかと思います。

念の為、他のブラウザで試してみるのも手だと思います。
一から書き直すのも...手だと...思います...

投稿2019/08/05 06:34

編集2019/08/05 07:49
satsh12st

総合スコア25

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

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

xminimx

2019/08/05 06:42

ご指摘いただいた内容で直してみました。 子孫要素について理解が浅いので非常に為になります、ありがとうございます。 ただ修正したあとも開発者ツールで確認したら問題なくhoverが反映されるのですが、 開発者ツールを閉じると効かなくなってしまいます… 併せ持ちのandをもたせたいというよりは、複数クラスを指定したことでhoverが反映されていない(他のクラスに負けている)かどうかを確認したいのです。
azuapricot

2019/08/05 06:44

「開発者ツールを閉じると効かなくなる」  →実コードが編集されてるわけじゃないからそりゃ更新とかしたら効かなくなるけどそこらへんはわかってますよね?さすがに・・・ あとはキャッシュのクリアとか試しましたか?
xminimx

2019/08/05 06:48

実コード編集→更新→開発者ツールで確認(localhost)という手順で行なっています。 キャッシュのクリアや、他の部分を一緒に変更したりして確認もしていますがhoverだけ変わりません涙
guest

0

(開発者ツールとブラウザの動作が違うことはよくあることなのでしょうか。)

開発ツール、そしてブラウザによっては軽微な構文ミス(例えば閉じ忘れ)をいい感じに調整してくれることがあります。

css

1.small_btn { 2 margin-top: 20px!important; 3 4div#hover:hover div.btn{

.small_btn閉じ忘れてますね。

投稿2019/08/05 06:25

m.ts10806

総合スコア80850

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

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

xminimx

2019/08/05 06:27

ご指摘ありがとうございます。 こちらに引用する際にコピペし損ねていたたようで、実際のコードでは閉じていました。
m.ts10806

2019/08/05 06:30

なるほど。では質問本文のコードを修正しておいてください。 ただ既に別の指摘があるようにCSSに対応するhtmlがありませんので、 そちらも併せて調整願います。
xminimx

2019/08/05 06:34

htmlと併せ修正いたしました。
m.ts10806

2019/08/05 06:37

div#hover:hover div.btn ↓ div#hover:hover.btn だと思います。 スペースあけるとそれは「配下の要素」を指すことになります。
xminimx

2019/08/05 06:43

ご指導ありがとうございます。 他の方にいただいたアドバイスと一緒に試してみましたが、やはり開発者ツールでしか効きません… 要素同士の関係をもっと見返してみます。
m.ts10806

2019/08/05 07:23 編集

手元では変わってます。 hoverで青くなります。
xminimx

2019/08/05 10:27

お返事遅くなりすみません。 mix-peachさんのおっしゃる通り記載していない他のスタイルに負けているのかもしれません。
m.ts10806

2019/08/05 21:14

!important つけてみて適用されるようであれば他の影響を受けてると言えますね
xminimx

2019/08/06 01:22

早朝のアドバイスありがとうございます。 朝一番で!importantをつけてみましたが、適用されませんでした。 上に親要素が被っていてhoverが無効化されていることを考え、検収しています。
m.ts10806

2019/08/06 01:23

ひとまず再現するコードを追記してください(質問のコードを更新するのではなく「現状」として追記してください)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問