#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で質問しましょう!
似たような質問が見つかりました
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- HTML・CSS cssの display: flex;で横並びにならずに困ってます 1 2022/12/04 13:18
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- HTML・CSS htmlについて質問です! 写真のように写真の部分が?になってしまいます。 ファイルもしっかり選べて 1 2023/07/09 21:17
- HTML・CSS FC2カートのテンプレートでの商品表示について 1 2023/03/02 18:05
- PHP ランキングを表示する際の画像の大きさを固定することは可能でしょうか? <?php if ( has_ 1 2022/07/21 14:55
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jqueryのsortableで一部ソート...
-
クリックした<a>タグのみにClas...
-
【javascript で動的に a タグ...
-
jQueryのhide,showで中の要素が...
-
jquery ドロップダウンメニュー...
-
どの<li><a> が押されたか判別...
-
javascriptでフォーカスを当て...
-
「jQuery」アコーディオンメニ...
-
MAX関数を使ってからLEFT JOIN...
-
Vb.net2005での画像の合成方法
-
c++std::string型をTCHARに変換...
-
HTMLからimgのsrcのみを正規表...
-
IplImageのBmp変換。
-
<div ~ </div> で囲まれたテキ...
-
IFRAMEの表示/非表示を切り替え...
-
動的にHTMLコンテンツを吹き出...
-
変数名をどのようにつけるのが...
-
jQueryでシンプルドラッグドロ...
-
プルダウンの位置がwin/macでず...
-
クリックで色変更後に既に変更...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jqueryのsortableで一部ソート...
-
「jQuery」アコーディオンメニ...
-
javascript テキストエリアを1...
-
jquery ドロップダウンメニュー...
-
jQueryでネスト構造の<li>がク...
-
クリックした<a>タグのみにClas...
-
jQueryの配列の渡し方について
-
for(var i=0;...) の i の値を...
-
JavaScriptによる疑似プルダウ...
-
jQueryのeqで最後からn番目以降...
-
javascriptでEnterキーをtabキ...
-
Jquery タブで、4つのliのうち...
-
【javascript で動的に a タグ...
-
どの<li><a> が押されたか判別...
-
マウスオーバーで開閉できるア...
-
同一ページ内で、任意の文字列...
-
jqueryプルダウンメニュー個別着色
-
JavaScript インクリメントの書...
-
複数の画像をランダム(シャッ...
-
タブ切り替えの初期表示について
おすすめ情報