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

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

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

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

HTML

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

CSS

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

Q&A

解決済

2回答

1302閲覧

css hover+ が反映されません

seiya6633

総合スコア1

hover

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

HTML

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

CSS

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

0グッド

0クリップ

投稿2021/10/04 02:24

前提・実現したいこと

画面いっぱいに、二つの画像が上下に並んでいます。

それぞれの画像hover時に、
hoberした画像は100vh、されなかった画像は表示されない(display:none)ものを作成しようとしています。

結果
”画像1”側にhover時は、”画像1”100vhとなるとともに”画像2”は消えました。
しかし、
”画像2”側にhover時は、”画像2”100vhとなりましたが”画像1”は消えません。

どこか文法が間違っている、そもそも○○がおかしいなどご助言いただけると幸いです。

HTMLコード <div class="image1"> </div> <div class="image2"> </div>

該当のソースコード

css

1 2 3 4.image1, 5.image2{ 6 height: 50vh; 7 width: 100vw; 8 } 9.image1{ 10 background-image: url("/image/man1280.jpg"); 11 background-size: cover; 12} 13.image2{ 14 background-image: url("/image/1280.jpg"); 15 background-size: cover; 16 17} 18.image1:hover{ 19 height: 100vh; 20 transition: .5s; 21} 22.image2:hover{ 23 height: 100vh; 24 transition: .5s; 25 } 26 .image2:hover + .image1{ 27 display: none; 28 } 29 .image1:hover + .image2{ 30 display: none; 31} 32 33 34

試したこと

それぞれのhoverを片方づつ消してみたり、backgroudimageではなくimgタグで試した

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

vscode1.60.2使用

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

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

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

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

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

guest

回答2

0

前方に処理ができないので適当にラップしてみてください

CSS

1<style> 2.image1, 3.image2{ 4 height: 50vh; 5 width: 100vw; 6} 7.image1{ 8 background-color:red; 9} 10.image2{ 11 background-color:blue; 12} 13.wrap:hover .image1:hover{ 14 transition:height .5s; 15} 16.wrap:hover .image1:not(:hover){ 17 height:0px; 18 transition:height .5s; 19} 20.wrap:hover .image2:not(:hover){ 21display:none; 22} 23.image1:hover, 24.image2:hover{ 25 height: 100vh; 26} 27</style> 28<div class="wrap"> 29<div class="image1">1</div> 30<div class="image2">2</div> 31</div>

投稿2021/10/04 03:10

編集2021/10/04 03:11
yambejp

総合スコア116724

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

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

seiya6633

2021/10/04 04:34

回答ありがとうございます。 代替案までいただき非常に勉強になりました。ありがとうございました!
guest

0

ベストアンサー

参考
https://developer.mozilla.org/ja/docs/Web/CSS/Adjacent_sibling_combinator

隣接兄弟結合子adjacent sibling combinator (+) は2つのセレクターを接続し、同じ親要素の子同士であって、1つ目の要素の直後にある2つ目の要素を選択します。

そのため
.image2:hover + .image1は
image2の後にあるimage1にしか適用されません。
直前にある要素にスタイルを適用したい場合はJavascirptを使ったほうがいいでしょう。

投稿2021/10/04 02:45

gogoweb_ikeda

総合スコア1426

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

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

seiya6633

2021/10/04 02:55

早速のご返答ありがとうございます。 直前の要素には適用できないことがわかりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問