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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

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

CSS

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

Q&A

2回答

229閲覧

ホバー時に表示 ホバーを解除したら非表示にする レイアウトを組みたい(動き付き)

KAI

総合スコア7

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

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

CSS

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

0グッド

1クリップ

投稿2024/06/24 10:43

実現したいこと

ホバー時にdisplay:none/blockを切り替えて要素を表示/非表示にしたいです。
js欄に記載したコードで実現したのですが、動きがカクカクになってしまうので動きをつけたいです。
(よくQ&Aのレイアウトであるような動きです。)

opacityなどを使う方法もあるようですが、自分で調べても実現には至りませんでした。

様々な方法があると思いますが、最初はdisplay:noneを保ちたいです。
ホバーによって、表示された要素分の高さが追加(伸びる)されるようなレイアウトを実現させたいです。

発生している問題・分からないこと

記載するべきjsコードがわからない。

該当のソースコード

HTML

1<div class="question-container"> 2 3 <div class="question-box"> 4 <p class="question-box_query">好きな色は?</p> 5 <p class="question-box_answer">赤色</p> 6 </div> 7 8 <div class="question-box"> 9 <p class="question-box_query">好きな果物は?</p> 10 <p class="question-box_answer">りんご</p> 11 </div> 12 13 <div class="question-box"> 14 <p class="question-box_query">出身は?</p> 15 <p class="question-box_answer">日本</p> 16 </div> 17 18</div> 19

javascript

1$(document).ready(function() { 2 $('.question-box').hover( 3 function() { 4 $(this).find('.question-box_answer').css('display', 'block'); 5 }, 6 function() { 7 $(this).find('.question-box_answer').css('display', 'none'); 8 } 9 ); 10}); 11

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

調べて実行しましたが実現できませんでした。

補足

特になし

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

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

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

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

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

guest

回答2

0

アコーディオン」と呼ばれるものをアニメーション付きで実装されたいのだと仮定してお答えいたします。


javascript

1$(document).ready(function() { 2 3 // 初期状態 4 $('.question-box_answer').hide(); 5 6 // slideDown/slideUpのオプション 7 const slideOptions = { 8 duration: 300, 9 easing: "linear", // デフォルトはswing 10 }; 11 12 // hoverイベント 13 $('.question-box').hover( 14 function() { 15 $(this).find('.question-box_answer').slideDown(slideOptions); 16 }, 17 function() { 18 $(this).find('.question-box_answer').slideUp(slideOptions); 19 } 20 ); 21}); 22

回答へのコメントを受けて修正しました。

「easing」の指定によって、アニメーションが始まってから終わるまでの間の変化具合を調整できます。

slideDown(slideUp)はデフォルトではswingです。
回答ではlinearを指定して、直線的な動きになるようにしました。

jQueryに限らずですが、使用するメソッドのドキュメントをご覧になって、どのようなことができるかを確認してみることをオススメします。

この「easing」はCSSのアニメーションでもよく使用するので、種類ごとにどのような挙動をするのかを知っておいても良いかもしれませんね。


投稿2024/06/24 13:54

編集2024/06/25 11:41
kitaizumi506

総合スコア30

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

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

KAI

2024/06/25 08:46

ご回答ありがとうございます。 動きはついたのですが、動きの感覚が、開く時/閉じる時それぞれ最後だけ動きが早くなってしまうようになっています。 (体感的なだけ恐らく動作時間が代わっているわけではないと思うのですが、後半動作が間に合っていないような状態です、途中まで一定間隔で動作し、その後一気に要素が表示されます。) 対応方法わかればご教授いただきたいです。 宜しくお願い致します。
kitaizumi506

2024/06/25 11:41

回答を修正しましたのでご確認ください。
KAI

2024/06/27 08:39

ご回答ありがとうございます。 お陰様で解決いたしました。
guest

0

その程度なら簡単なCSSでいけるのでは?

html

1<style> 2.question-box_query:not(:hover) + .question-box_answer{ 3display:none; 4} 5</style> 6<div class="question-container"> 7 8 <div class="question-box"> 9 <p class="question-box_query">好きな色は?</p> 10 <p class="question-box_answer">赤色</p> 11 </div> 12 13 <div class="question-box"> 14 <p class="question-box_query">好きな果物は?</p> 15 <p class="question-box_answer">りんご</p> 16 </div> 17 18 <div class="question-box"> 19 <p class="question-box_query">出身は?</p> 20 <p class="question-box_answer">日本</p> 21 </div> 22</div>

動きつき

html

1<style> 2.question-box_query:not(:hover) + .question-box_answer{ 3display:none; 4} 5.question-box_query{ 6 z-index:1; 7} 8.question-box_query:hover + .question-box_answer{ 9animation:slidedown 1s; 10animation-fill-mode:forwards; 11 z-index:2; 12} 13@keyframes slidedown{ 14 from{opacity:0;height:0;transform:translateY(-1em);} 15 to {opacity:1;height:2em;transform:translateY(0);} 16} 17</style> 18<div class="question-container"> 19 20 <div class="question-box"> 21 <p class="question-box_query">好きな色は?</p> 22 <p class="question-box_answer">赤色</p> 23 </div> 24 25 <div class="question-box"> 26 <p class="question-box_query">好きな果物は?</p> 27 <p class="question-box_answer">りんご</p> 28 </div> 29 30 <div class="question-box"> 31 <p class="question-box_query">出身は?</p> 32 <p class="question-box_answer">日本</p> 33 </div> 34</div>

投稿2024/06/24 11:12

編集2024/06/25 01:54
yambejp

総合スコア115870

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.40%

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

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

質問する

関連した質問