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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Q&A

解決済

1回答

14411閲覧

ホバー時に複数の要素にホバーアクションを適用させたい

hiroki88

総合スコア66

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

0グッド

2クリップ

投稿2019/03/04 04:56

HTML

1 <div id="a"> 2 <a href="#" class="b"><img src="1.png" alt="" /></a> 3 <a href="#" class="b"><img src="2.png" alt="" /></a> 4 <a href="#" class="b"><img src="3.png" alt="" /></a> 5 <a href="#" class="b"><img src="4.png" alt="" /></a> 6 </div>

CSS

1.b{ 2 float:left; 3 display:block; 4 cursor:pointer; 5 transform:scale(1); 6} 7.b img{ 8 height:140px; 9 width:140px; 10 border-radius:50%; 11 margin-right:160px; 12} 13.b:nth-child(1):hover + .b:nth-child(2),.b:nth-child(3),.b:nth-child(4){ 14 transform:scale(0.5); 15} 16.b:nth-child(2):hover + .b:nth-child(1),.b:nth-child(3),.b:nth-child(4){ 17 transform:scale(0.5); 18} 19.b:nth-child(3):hover + .b:nth-child(2),.b:nth-child(1),.b:nth-child(4){ 20 transform:scale(0.5); 21} 22.b:nth-child(4):hover + .b:nth-child(2),.b:nth-child(3),.b:nth-child(1){ 23 transform:scale(0.5); 24}

【やりたいこと】
bのnth-child(1)にホバーした時に他のb[nth-child(2~4)]のscaleを1倍から0.5倍に変更したい。
それを各b:nth-child(1~4)に適用させたい。
なのでホバーしたb以外のbを1倍から0.5倍になるようにしたい。

【困ったいること】
上記のcssを書きましたがホバーしても他のbが小さくなりませんでした。

【試したこと】
cssの複数要素を書く場合,で区切って書きますが、調べた時にnth-childの複数要素を書く場合は
,ではなく対象要素に対してb:nth-child(2):nth-child(3):nth-child(4)のように繋げて書くと
でてきたので試してみましたができませんでした。
ちなみに1つの要素の場合はホバーアクションを適用できましたが複数はできませんでした。

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

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

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

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

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

guest

回答1

0

ベストアンサー

下記のようにしてみてください。
#containerのホバー時に、ホバーしていない<a>要素を指定する感じです。
こちらでしたら要素数が増えてもcssも併せて変更する必要がありません。

html

1 <!-- aと被るのでidを変更--> 2 <div id="container"> 3 <a href="#" class="b"><img src="1.png" alt="" /></a> 4 <a href="#" class="b"><img src="2.png" alt="" /></a> 5 <a href="#" class="b"><img src="3.png" alt="" /></a> 6 <a href="#" class="b"><img src="4.png" alt="" /></a> 7 </div>

css

1#container:hover a:not(:hover) { 2 transform: scale(0.5); 3} 4 5/* 下記は不要なので削除 6.b:nth-child(1):hover + .b:nth-child(2),.b:nth-child(3),.b:nth-child(4){ 7 transform:scale(0.5); 8} 9.b:nth-child(2):hover + .b:nth-child(1),.b:nth-child(3),.b:nth-child(4){ 10 transform:scale(0.5); 11} 12.b:nth-child(3):hover + .b:nth-child(2),.b:nth-child(1),.b:nth-child(4){ 13 transform:scale(0.5); 14} 15.b:nth-child(4):hover + .b:nth-child(2),.b:nth-child(3),.b:nth-child(1){ 16 transform:scale(0.5); 17} 18*/

サンプル

投稿2019/03/04 05:15

編集2019/03/04 05:25
runny_nose

総合スコア280

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

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

hiroki88

2019/03/04 05:29

教えていただいたことを試しましたら上手く動作することができました! 初めてみる書き方でもしよろしければa:not(:hover)の部分がどのような意味か 教えていただいてもよろしいでしょうか?
runny_nose

2019/03/04 05:39 編集

https://developer.mozilla.org/ja/docs/Web/CSS/:not 詳細は↑が詳しいのですが、 not:()のかっこの部分で指定したセレクタに一致しないものが選択されるようになります。 #container:hover a:not(:hover)とした場合、 「ホバー状態の#container配下の<a>タグ要素の内、ホバー状態ではないもの」という意味となります
hiroki88

2019/03/04 05:45

なるほどです。とてもわかりやすく教えて頂きありがとうございました!
runny_nose

2019/03/04 06:03 編集

また、蛇足ですが、 .b { float: left; display: block; cursor: pointer; transform: scale(1); transition: 0.3s; } .b img { height: 140px; width: 140px; border-radius: 50%; margin-right: 160px; } #container:hover .b:not(:hover) { transform: scale(0.5); } のようにtransitionを設定すると、動きがなめらかになってよりよいと思いました
hiroki88

2019/03/04 07:09

ありがとうございます。 ぜひ試してみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問