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

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

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

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

CSS3

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

hover

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

解決済

1回答

1904閲覧

写真 画像の上にhoverしたらキャプションを表示させる

mitrasi

総合スコア49

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

CSS3

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

hover

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

0クリップ

投稿2021/07/14 08:14

編集2021/07/15 08:08

前提・実現したいこと

前回の続きです。
前回、ご回答を頂き、「altを取得すること」が無事成功致しました。
次に、hoverした際にはdivのcssを適用するなどといったhoverした際の処理を行いたいのですが、なぜかhoverさせてもcssが適用されません。

どこが間違っているのかご指導頂けますと幸いです。

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

エラーメッセージ

該当のソースコード

HTML

1<section class="section-title" id="style"> 2 <div class="content-wrapper"> 3<h2 class="section-title">Style</h2> 4<div class="style-wrapper"> 5<ul> 6 7 <li class="style-item"><img src="images/style02-min.jpg" alt="大人キュートなベリーショート" class="style-img"></li> 8 <li class="style-item"><img src="images/style03-min.jpg" alt="かわいくて大人気!甘えんぼなガーリースタイル" class="style-img"></li> 9 <li class="style-item"><img src="images/style04-min.jpg" alt="愛されゆるふわガール" class="style-img"></li> 10 <li class="style-item"><img src="images/style05-min.jpg" alt="ボリューミーで女性らしいシルエット" class="style-img"></li> 11 <li class="style-item"><img src="images/style06-min.jpg" alt="ナチュラル清楚な美人に" class="style-img"></li> 12 <li class="style-item"><img src="images/style07-min.jpg" alt="さっぱりエネルギー溢れる活力のある女性" class="style-img"></li> 13 <li class="style-item"><img src="images/style08-min.jpg" alt="エネルギッシュさにオトナらしさもプラス" class="style-img"></li> 14 <li class="style-item"><img src="images/style09-min.jpg" alt="カントリーチックな最先端スタイル" class="style-img"></li> 15 <li class="style-item"><img src="images/style10-min.jpg" alt="定番のさらさらストレート" class="style-img"></li> 16 <li class="style-item"><img src="images/style11-min.jpg" alt="小動物感漂うふわふわ感癒されること間違いなし" class="style-img"></li> 17 <li class="style-item"><img src="images/style01-min.jpg" alt="お父さんのスタイリングもお任せください" class="style-img"></li> 18</ul> 19</div> 20<a href="#"><img src="images/linesend_black-min.png" alt="" class="line_btn"></a> 21 </div> 22</section> 23

該当のソースコード

CSS

1/*キャプション部分*/ 2/*今はないが後からjQueryにより生成される*/ 3/*今はないがhoverした時に画像の大きさいっぱいに重なる要素になるキャプションを表示するための領域となる*/ 4.style-item{ 5 div{ 6 position:absolute; 7 display: none; 8 width:100%; 9 height:100%; 10 padding:20px; 11 background:rgba(17,179,179,.7); 12 top:0; 13 left:0; 14 box-sizing:border-box;} 15 /*アニメーションように10pxずらしておく*/ 16/*今はないが後からjQueryにより生成される 上記のdivの中に入れるキャプションの本文になる*/ 17p { 18 position:relative; 19 top:10px; 20} 21} 22 23 24 25}

該当のソースコード

javascript

1$(function () { 2 //画像のキャプション表示 3 4 //「style-item」というクラスを持ちかつ、liの最後の要素にdivを追加する 5$("li" + ".style-item").append("<div>"); 6//そのなかにdiv 7$("li" + ".style-item").each(function() { 8//画像のキャプションを取得 9//自分(div)からみて親要素(li)の子要素(img)のalt属性 10//$(this).parent().children("img").attr("alt"); 11//それを取得したキャプション用にテキストをp要素としてdiv要素内におさめる 12 const alt = $(this).children("img").attr("alt"); 13 console.log(alt); 14 $(this).children("div").html("<p>" + alt + "</p>"); 15//$(this).html("<p>" + $(this).parent().children("img").attr("alt") + "</p>"); 16}); 17 //マウスオーバーした時の処理 18 $("li").hover(function () { 19 //マウスオーバー時の処理 20//フェードイン 21 $(this).children("div").stop().fadeIn(300); 22 //キャプションのテキスト位置:10pxから0pxへ移動 23 $(this).children("div").children("p").stop().animate({ "top": 0 }, 300); 24 25 //マウスアウト時の処理 26 }, function () { 27 28 }); 29}); 30

試したこと

■前回同様範囲ミスかと思い、確実に指定できる「style-item」などのクラス名を用いて絞込をした
→変わらない

■もしjs側が悪いとしたら、実はdivがもうliの上に敷かれている状態だから写真の上にhoverしても間にdivが一枚入っているのでhoverできていないことになっていているためcssが適用されない
→試してみたかったが、どうやって検証したらよいかそもそもわからない。

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

OS:Windows
エディタ:VScode
ブラウザ:クローム

###追加修正を受けての追記
追加修正を受けまして、以下のようにしてみたところ、hoverしてもやはり表示されませんでした。

js

1$(function () { 2 //画像のキャプション表示 3 //「style-item」というクラスを持ちかつ、liの最後の要素にdivを追加する 4$("li" + ".style-item").append("<div>"); 5//そのなかにdiv 6$("li" + ".style-item").each(function() { 7//画像のキャプションを取得 8//自分(div)からみて親要素(li)の子要素(img)のalt属性 9//$(this).parent().children("img").attr("alt"); 10//それを取得したキャプション用にテキストをp要素としてdiv要素内におさめる 11 const alt = $(this).children("img").attr("alt"); 12 console.log(alt); 13 $(this).children("div").html("<p>" + alt + "</p>"); 14//$(this).html("<p>" + $(this).parent().children("img").attr("alt") + "</p>"); 15}); 16 //マウスオーバーした時の処理 17 $("li").hover(function () { 18 //マウスオーバー時の処理 19//フェードイン 20 $(this).children("div").stop().fadeIn(300); 21 //キャプションのテキスト位置:10pxから0pxへ移動 22 $(this).children("div").children("p").stop().animate({ "top": 0 }, 300); 23 console.log('hover') 24 //マウスアウト時の処理 25 }, function () { 26 27 }); 28}); 29

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

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

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

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

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

k4a

2021/07/15 07:04

前回の質問から来ました。 私の環境だとホバー時に前面に水色のdivとaltの文字が入ったpが出てくるのですが、他の場所にミスはありませんか? ` $("li").hover(function () {})`内で`console.log('hover')`等をした場合は出力されますか? 多分出力されると思いますが、それならhover自体は出来ています
mitrasi

2021/07/15 08:10

hoverしても特に何もありませんでした。 console.log()に変化があるかどうかということでしょうか?
k4a

2021/07/15 08:24

凄く基礎的な質問で失礼になるかもしれませんが、ブラウザの開発者ツールはわかりますか? console.log()で出力した文字は開発者ツールの`Console`タブに表示されます。
mitrasi

2021/07/15 08:27 編集

いえ、大丈夫です。 存じ上げております。ですが、conosoleにはhoverするしないに関わらず取得したalt内容が最初から表示されておりますのでhoverして出てきたかどうかは分かりかねます。
k4a

2021/07/15 08:40 編集

'hover'という文字は出ませんか? 邪魔なら`console.log(alt);`は消しちゃったほうがいいかもしれません。 別々の環境でやり取りしてても不毛なので、こちらを共有します。 https://jsfiddle.net/k4a_/kdvatuxz/ 参考にしてください。
mitrasi

2021/07/15 08:44

はい、変わらず特に表示されません???? 拝見させて頂きました。 とりあえずしばらくはこちらを参考に原因を探してみたいと思います。 わざわざありがとうございます。
guest

回答1

0

ベストアンサー

キャプション付きの画像がほしいときはaltではなくfigure/figcaptionで
やると効率的です。

css

1<style> 2figure:not(:hover) figcaption{ 3display:none; 4} 5figure{ 6position:relative; 7display:inline-block; 8margin:0px; 9} 10figcaption{ 11font-size:0.7em; 12position:absolute; 13bottom:20px; 14left:0px; 15color:#ffffff; 16background:rgba(0,0,0,0.6); 17width:100%; 18padding:1em 0px; 19text-align:center 20} 21</style> 22<figure> 23<img src="images/style02-min.jpg" alt="大人キュートなベリーショート" class="style-img" width="200" height="150"> 24<figcaption>大人キュートなベリーショート</figcaption> 25</figure>

投稿2021/07/14 08:45

yambejp

総合スコア114839

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問