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

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

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

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

HTML5

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

jQuery UI

jQuery UI はjQuery公式のインターフェースライブラリであり、対話型のウェブアプリケーションを作る際に役立ちます。

jQuery

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

Q&A

1回答

1493閲覧

【jQuery】hoverでslideDown/slideUpを実装したい

rightbrain

総合スコア3

hover

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

HTML5

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

jQuery UI

jQuery UI はjQuery公式のインターフェースライブラリであり、対話型のウェブアプリケーションを作る際に役立ちます。

jQuery

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

0グッド

0クリップ

投稿2020/10/13 01:32

前提・実現したいこと

現在のコードからhoverするとslideDown、hoverがはずれるとslideUpしたいです。
また、slideDownの際(現在はフェードイン)に.4秒遅れて実装されるようにしていますが、
slideUpの際も同様に.4秒遅れて実装させたいです。

ご教示の程、宜しくお願い致します。

該当のソースコード

<div id="header_bg"></div> <header id="header"> <nav id="gnavi"> <ul> <li> <a href="javascript:;">タイトル</a> <div class="subnavi">サブナビ</div> </li> <li> <a href="javascript:;">タイトル</a> <div class="subnavi">サブナビ</div> </li> <li> <a href="javascript:;">タイトル</a> <div class="subnavi">サブナビ</div> </li> </ul> </nav> </header>
$(function(){ var moveElm = $('#gnavi > ul > li'); moveTimer = 0; hideTimer = 0; moveElm.hover(function(){ var self = $(this), selfMdd = self.find('.subnavi'); self.on('mousemove', function(){ clearTimeout(moveTimer); clearTimeout(hideTimer); moveTimer = setTimeout(function(){ self.addClass('mddActive'); selfMdd.css({display:'block'}).stop().animate({opacity:'1'},200,'swing'); $("#header_bg").stop().fadeIn(); self.siblings('li').removeClass('mddActive'); self.siblings('li').find('.subnavi').stop().animate({opacity:'0'},function(){ $(this).css({display:'none'}); }); }, 400); }); },function(){ var self = $(this), selfMdd = self.find('.subnavi'); clearTimeout(moveTimer); hideTimer = setTimeout(function(){ self.removeClass('mddActive'); selfMdd.css({display:'none'}); $("#header_bg").stop().fadeOut(); }, 400); }); $('#gnavi > ul').hover(function(e){ e.preventDefault(); },function(){ $('#gnavi > ul > li').removeClass('mddActive').find('.subnavi').stop().animate({height:'0',opacity:'0'}); }); });
#header_bg { display: none; position: absolute; width: 100%; height: 100%; background: #000; z-index: 40; filter: alpha(opacity=70); -moz-opacity: 0.70; opacity: 0.70; } #header { position: fixed; top: 0; box-sizing: border-box; width: 100%; padding: 0 94px; background: #fff; z-index: 100; box-shadow: 0 -20px 20px 20px rgba(0,0,0,0.4); } #header #gnavi { margin: 0 auto; box-sizing: border-box; max-width: 1200px; height: 65px; } #header #gnavi > ul { display: flex; justify-content: space-between; } #header #gnavi > ul > li > a { position: relative; display: flex; align-items: center; box-sizing: border-box; height: 65px; padding: 0 1em; font-size: 16px; font-weight: bold; line-height: 1.25em; color: #000; } #header #gnavi .subnavi { display: none; position: absolute; top: 130px; right: 0; left: 0; width: 100%; height: auto !important; margin: auto; background: #fff; box-shadow: 0 15px 15px -15px rgba(0,0,0,0.4) inset; }

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

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

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

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

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

guest

回答1

0

javascript

1$(function(){ 2 $('.subnavi').hide(); 3 $('#gnavi li').hover(function(){ 4 $(this).find('.subnavi').delay(300).slideDown(); 5 },function(){ 6 $(this).find('.subnavi').delay(300).slideUp(); 7 }); 8});

投稿2020/10/13 04:15

編集2020/10/13 04:15
yambejp

総合スコア116724

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

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

rightbrain

2020/10/13 08:56

ご回答いただき、ありがとうございます。 上記の方法でも試しましたが、#gnavi liを素早く移動するとその回数分だけ.subnaviがslideUp/Downされてしまいます… 現状.subnaviが表示されるフェードイン・アウト以外の挙動については変更せずにと思っております。
yambejp

2020/10/14 00:51

>素早く移動するとその回数分だけ.subnaviがslideUp/Downされてしまいます delayするとはそういうことですが? マウスをのせて0.3秒以内にはずしたらなかったことにするということですか?
rightbrain

2020/10/14 06:26

>マウスをのせて0.3秒以内にはずしたらなかったことにするということですか? そうですね。一定の時間hoverしていないと表示されないような挙動にしたいです。そうでないと、hoverの度に.subnaviがちかちかして使いづらいかと思っております…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問