
#gnavi > ul > li > a にhoverした時に、subnaviがドロップダウンで表示&画面全体に黒い半透明のマスクがかかるのが理想です。ですがaタグのhoverを繰り返すと、その回数分だけ半透明のマスクがちかちかと表示されてしまいます。
hoverした時だけマスクを表示させたいのですが、以下のコードから修正する方法はありますでしょうか。
何卒ご教授のほど、よろしくお願い致します。
【HTML】
<nav id="gnavi">
<ul>
<li>
<a href="javascript:;"><span>タイトル</span></a>
<div class="subnavi">コンテンツ</div>
</li>
<li>
<a href="javascript:;"><span>タイトル</span></a>
<div class="subnavi">コンテンツ</div>
</li>
<li>
<a href="javascript:;"><span>タイトル</span></a>
<div class="subnavi">コンテンツ</div>
</li>
</ul>
</nav>
【jQuery】
$(function(){
$(".subnavi").hide();
$("#header_bg").hide(); //#header_bgが半透明マスクです
$("#gnavi > ul > li").hover(function(){
$(".subnavi:not(:animated)", this).slideDown(500);$("#header_bg").fadeIn();},
function(){
$(".subnavi",this).slideUp(100);
$("#header_bg").fadeOut();
});
$("#gnavi > ul > li").click(function(){
$(".subnavi:not(:animated)", this).slideToggle(500);$("#header_bg").fadeToggle();},
function(){
$(".subnavi",this).slideToggle(500);
$("#header_bg").fadeToggle();
});
$("#header_bg").click(function(){
$(".subnavi").slideUp(100);
$("#header_bg").fadeOut();
});
});
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
こんにちは
肝心の#header_bgがどうなっているのかが、まったく示されていないので、考えようがありませんが、以下は、勝手な想像に基づく回答です。
違っている場合はスルーしてください。
想像するところ#header_bgはposition:absoluteなどにして画面いっぱいの背景色(または画像)などを半透明にして表示しているのではないかと推測。
(↑)このような仕組みにしておくと、hoverが発生して#header_bgが表示された瞬間に、そちらが前面にくることになるので、元の要素に対してmouseoutが発生します。
すると、#header_bgが消されて再びhoverが発生・・・ということの繰り返し。
・・・これによってチラチラしているのではないかと。
ですので、まずは#gnaviが#header_bgよりも前面に位置するようにCSS等で制御しておいてください。
次に、項目間をマウスで撫でると、上記と似たような事象(mouseon-outの繰返し)が発生することになるので、こちらもまたチラつきの原因になるものと想像されます。
これに関しては、一旦、アニメーションのキューをクリアして、新しいアニメーションを始めるようにすることで、かなり抑えることができるはずです。(操作への反応なので、そういう操作をする限り、完全にはなくなりませんが…)
具体的には、
$("#header_bg").fadeIn();
↓ ↓
$("#header_bg").stop().fadeIn();
といった要領です。(他も同様)
#header_bg部分が抜けておりました…申し訳ありません。
おっしゃる通り画面いっぱいに背景色が表示される仕組みになっております。
jQueryに.stop()を追記したところ、思ったとおりのアニメーションになりました!
とても助かりました!ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
質問に答えていくと、回答によ...
-
開閉式ツリー型メニューについて
-
jQueryでネスト構造の<li>がク...
-
MAX関数を使ってからLEFT JOIN...
-
アコーディオンメニューが開い...
-
jspでcssが読み込めない
-
textareaに画像を表示したい
-
clear: bothの事で質問です。
-
クリックすると画像を表示するタグ
-
jQueryの.text()関数でiframe
-
jsファイルのエラーについて
-
折りたたみ式JavaScriptをcheck...
-
ボタンをクリックした時に、キ...
-
OpenCVで固定枠で画像を操作す...
-
オンマウスで流れる文字
-
文字をクリックしたら別の文字...
-
小さい写真にマウス置くと拡大...
-
スライダーを実装した場合、ペ...
-
テキストノードを非表示にでき...
-
Javascriptで指定した日付と時...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ネストされたチェックボックス...
-
jqueryのsortableで一部ソート...
-
jQueryでネスト構造の<li>がク...
-
jQueryでタブ切り替え
-
【jQuery】遅延実行(タイムラ...
-
jQuery appendの中身の出力につ...
-
javascript テキストエリアを1...
-
javascriptでEnterキーをtabキ...
-
「jQuery」アコーディオンメニ...
-
【jQuery】hoverしたn秒後にイ...
-
タグの表示順を入れ替え、
-
JQueryリストタグへのページネ...
-
id付きのHTMLテキストを変更→元...
-
特定のクラスを持つ<li>を非表...
-
jqueryのプラグインflexslider...
-
DOM の 要素の数え方について
-
jquery ドロップダウンメニュー...
-
【javascript で動的に a タグ...
-
同一ページ内で、任意の文字列...
-
【jQuery】ナビゲーションにhov...
おすすめ情報