東京ウェブ制作ブロマガ

jQueryでアニメーション表示されたサブメニューを選択できるようにする

2013/03/28 19:16 投稿

  • タグ:
  • 登録タグはありません
  • タグ:
  • 登録タグはありません
●スクリプト
<script type="text/javascript">
$(function(){

  $("div.c_kantou").mouseover(function(){
    $("div#i_kantou:not(:animated)").show("normal");
  })

  $("div.c_kantou").mouseout(function(){
    $("div#i_kantou:not(:animated)").hide("normal");
  })

  $("div.c_kansai").mouseover(function(){
    $("div#i_kansai:not(:animated)").show("normal");
  })

  $("div.c_kansai").mouseleave(function(){
    $("div#i_kansai:not(:animated)").hide("normal");
  })

});
</script>

●HTML
<div class="c_kantou">
関東
<div id="i_kantou" style="display: none;">
<a class="c_tokyo" href="#">東京</a>
<a class="c_kanagawa" href="#">神奈川</a>
<a class="c_saitama" href="#">埼玉</a>
</div><!-- end of i_kantou -->
</div><!-- end of c_kantou -->

<div class="c_kansai">
関西
<div id="i_kansai" style="display: none;">
<a class="c_osaka" href="#">大阪</a>
<a class="c_kyoto" href="#">京都</a>
<a class="c_wakayama" href="#">和歌山</a>
</div><!-- end of i_kansai -->
</div><!-- end of c_kansai -->


●CSS

.c_kantou{
background-color:lightskyblue;
border: 0px solid #FF0000;
width:200px;
float:left;
}

.c_tokyo{
display: block; /* インラインボックスをブロックボックスに変更する */
text-decoration: none; /* リンクの下線を消す */
border:0px solid #FFFFFF;
background-color:lightgreen;
}

.c_kanagawa{
display: block; /* インラインボックスをブロックボックスに変更する */
text-decoration: none; /* リンクの下線を消す */
border:0px solid #FFFFFF;
background-color:springgreen;
}

.c_saitama{
display: block; /* インラインボックスをブロックボックスに変更する */
text-decoration: none; /* リンクの下線を消す */
border:0px solid #FFFFFF;
background-color:greenyellow;
}


.c_kansai{
background-color:sandybrown;
border: 0px solid #FF0000;
width:200px;
float:left;
}

.c_osaka{
display: block; /* インラインボックスをブロックボックスに変更する */
text-decoration: none; /* リンクの下線を消す */
border:0px solid #FFFFFF;
background-color:tomato;
}

.c_kyoto{
display: block; /* インラインボックスをブロックボックスに変更する */
text-decoration: none; /* リンクの下線を消す */
border:0px solid #FFFFFF;
background-color:plum;
}

.c_wakayama{
display: block; /* インラインボックスをブロックボックスに変更する */
text-decoration: none; /* リンクの下線を消す */
border:0px solid #FFFFFF;
background-color:hotpink;
}

●解説
関東のメニュー表示後、サブメニューの項目(東京や神奈川など)を選択しようとすると、
サブメニューが消えてしまう。これはmouseoutが子要素に効いてしまうからである。
一方、関西は、mouseout ではなく mouseleave を使っている。
mouseleaveは子要素には効かない。よって、大阪や京都などにマウスカーソルを乗せても
サブメニューが消えることは無い。
ちなみにnot(:animated)は、アニメーションが連続して止まらなくなる現象を防ぐ処理である。

サンプルソース

ブロマガ会員ならもっと楽しめる!

  • 会員限定の新着記事が読み放題!※1
  • 動画や生放送などの追加コンテンツが見放題!※2
    • ※1、入会月以降の記事が対象になります。
    • ※2、チャンネルによって、見放題になるコンテンツは異なります。
東京ウェブ制作ブロマガ

東京ウェブ制作ブロマガ

大和賢一郎

月額:¥550 (税込)

コメント

コメントはまだありません
コメントを書き込むにはログインしてください。

いまブロマガで人気の記事

継続入会すると1ヶ月分が無料です。 条件を読む

東京ウェブ制作チャンネル

東京ウェブ制作チャンネル

月額
¥550  (税込)
このチャンネルの詳細