- ベストアンサー
メニューボタン画像のロールオーバー時の処理について
- ドロップダウンメガメニューを作成している際に、メニューのボタンを画像にし、ロールオーバー時に透過して背景が見えるようにしたいと考えています。
- 現在のスクリプトでは、画像からマウスをドロップダウンメニューに移動すると透過が戻ってしまう問題が発生しています。
- 追加したスクリプトでは、ドロップダウンメニューにロールオーバーしている間、a要素のクラスを置き換えることで透過GIFに変更しようとしましたが、うまくいきませんでした。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.2です 連投失礼 $("a:first", this) でよかったですね。
その他の回答 (2)
- fujillin
- ベストアンサー率61% (1594/2576)
No.1です。 >$(this).stop().animate({'opacity' : '1'}, 500); >マウスが画像から離れるとアニメーションで透明度100%で表示させているなので、 >style=で透明度1が指定されて透明になりません。 CSSで行なう場合は、class設定に対応して表示が行われるように、そのスクリプトをはずしておかないと、仰る通りうまく動作しません。 アニメーションを付けたいのであれば、img.btnに対してhoverを設定するのではなく、li要素に対してmouseenter、mouseleaveのイベントを設定してあげればお望みのようになりませんか? http://api.jquery.com/mouseenter/ $(function(){ $("#megamenu > li").mouseenter(function(){ $(this).find("a:first").stop().animate({'opacity' : '0.2'}, 200); }).mouseleave(function(){ $(this).find("a:first").stop().animate({'opacity' : '1'}, 200); }); }); みたいな感じで。(未検証です)
- fujillin
- ベストアンサー率61% (1594/2576)
ご質問文の文章を読んだだけで、内容は見てませんが、 >ドロップダウンメニューにロールオーバーしている間、class="mm-item-link-hover" >がaに追加されています。 classが設定されている間だけ透過になればよいのなら、CSSで透明度の設定をしておくのではダメなのですか? それとも、違う意味なのでしょうか。 >$(function() { >$("a.mm-item-link-hover").each(function() { >$("img.btn").attr("src", "/img/blank.gif"); >}); >}); どのタイミングで実行しようとしているのか不明ですが、まずは $(function(){ ~ の意味を調べてみてください。 「透明に」って、画像を入替えるって意味だったのですか? 透明度を変えるという意味ではなかったのでしょうか? 通常「ロールオーバー」というと、マウスを離せば元に戻る動作をイメージすると思いますが、戻す処理はいらないのでしょうか? CSSでなくスクリプトで処理するにしても、ロールオーバー処理に向いている element.hover( ) とか element.toggle( ) ってのがあったような気がします。 <ご参考まで> http://api.jquery.com/
お礼
>CSSで透明度の設定をしておくのではダメなのですか? 最初にそれを思いついて試したのですが、CSSで「.mm-item-link-hover img」に透明度を指定していても function(){ $(this).stop().animate({'opacity' : '1'}, 500); } でマウスが画像から離れるとアニメーションで透明度100%で表示させているなので、style=で透明度1が指定されて透明になりません。 画像にマウスオーバー→画像を見えなくする(透明化or透過gifに置き換え) 画像からもドロップダウンからもロールオフ→画像を100%表示 としたいのですが、方法はありますでしょうか?
お礼
御礼が遅れてすみません、ありがとうございました!