「jQueryで横並びメニューのドロップダウン型メニューを作る」の編集履歴(バックアップ)一覧はこちら

jQueryで横並びメニューのドロップダウン型メニューを作る」(2015/07/21 (火) 15:58:43) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

メニュー項目が多すぎるとメニューのものをグループ分けし、そのグループを横並びリンクとして作っている場合があります。さらに、そのリストにカーソルを載せるとそれぞれから下にサブメニューがでてくることがあります。今日はそんなドロップダウン型メニューを作っていきたいと思います。7月21日記事 ~ ~ イメージ~ 大きなカテゴリにあてると下側にサブメニューがあらわれる #image(width=400,001.png) さらにサブメニューにカーソルを合わせると色も変わる #image(width=400,002.png) ~ ~ 目次 #contents ~ ~ *作る上で注意したいこと +デザイン決めとく。 ++メインメニュー、サブメニューのそれぞれの背景色と文字色) ++メインメニュー、サブメニューのhover時のそれぞれの背景色と文字色) 4種類×2の8つの色を決めておかなければいけません。けっこう厄介でした・・・最終的には配色決めで懲りてしまったので、モノトーンで書いていきます(笑) *HTML記述 liタグのなかにliタグを入れるのが特徴です。 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="reset.css"> <link rel="stylesheet" type="text/css" href="style.css"> <title>メニュー</title> </head> <body> <div class="menunav"> <ul id="menu"> <li><a href="#">ホーム</a></li> <li><a href="#">新着情報</a> <ul class="sub"> <li><a href="#">新着</a></li> <li><a href="#">プレスリリース</a></li> <li><a href="#">重要情報</a></li> </ul> </li> <li><a href="#">試験概要</a> <ul class="sub"> <li><a href="#">ITパスポート</a></li> <li><a href="#">基本情報技術者試験</a></li> <li><a href="#">応用情報技術者試験</a></li> </ul> </li> <li><a href="#">過去問広場</a> <ul class="sub"> <li><a href="#">午前問題</a></li> <li><a href="#">午後問題</a></li> <li><a href="#">午前問題解説コンテンツ</a></li> <li><a href="#">午後問題解説コンテンツ</a></li> </ul> </li> <li><a href="#">お問い合わせ</a> <ul class="sub"> <li><a href="#">よくあるご質問</a></li> <li><a href="#">お問い合わせ先</a></li> </ul> </li> </ul> </div> </body> </html> *CSS記述 @charset "utf-8"; /* CSS Document */ .menunav ul#menu { margin: 20px 20px 0px 20px; padding: 0px; height: 40px; } .menunav ul#menu li { float: left; width: 180px; height: 40px; list-style-type: none; position: relative;/*subメニューを縦方向にメニューを並べるために必要*/ } .menunav ul#menu a { background: #000; color: #FFF; line-height: 40px; text-align: center; text-decoration: none; display: block; width: 100%; height: 100%; } .menunav ul#menu a:hover { background: #CCC; color: #000; } .menunav ul#menu ul.sub { border-width: 1px 1px 0px 1px; border-style: solid; border-color: #666; margin: 0px; padding: 0px; display: none; position: absolute; } .menunav ul#menu ul.sub li { width: 195px; /*180pxよりちょっと大きくしておく。*/ height: 35px; border-width: 0px 0px 1px 0px; border-style: solid; border-color: #000; } .menunav ul#menu ul.sub li a { background: #FFF; color: #000; line-height: 35px; text-align: left; text-indent: 5px; } .menunav ul#menu ul.sub li a:hover { background: #CCC; color: #000; } *jQuery headタグ内に以下のものを書きます。 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script type="text/javascript"> $(function(){ $('#menu li').hover(function(){ $('ul',this).slideDown();//上から落ちてくるようならslideDown,普通にみせるならshow }, function(){ $('ul',this).hide();//すぐに隠すならhide,上に上がっていくようにするならslideUP }); }); </script> *まとめ position:relativeとposition:relativeを忘れてはいけません。 色の扱いが劇的に増えるため、色をあらかじめ決めておくとよいです。 今回は白、黒、灰色の組み合わせで行っていきましたが、&color(red){カラーになると配色のことを考えながら作っていくこと}が必要です。 また、jQueryのほうでは、&color(red){show,hideのみでただ単に「表示、非表示」ができますが、slideUP,slideDownを使えば「上にあがっていったり、下に下がっていったり」すること}ができます。
メニュー項目が多すぎるとメニューのものをグループ分けし、そのグループを横並びリンクとして作っている場合があります。さらに、そのリストにカーソルを載せるとそれぞれから下にサブメニューがでてくることがあります。今日はそんなドロップダウン型メニューを作っていきたいと思います。7月21日記事 ~ ~ イメージ~ 大きなカテゴリにあてると下側にサブメニューがあらわれる #image(width=600,001.png) さらにサブメニューにカーソルを合わせると色も変わる #image(width=600,002.png) ~ ~ 目次 #contents ~ ~ *作る上で注意したいこと +デザイン決めとく。 ++メインメニュー、サブメニューのそれぞれの背景色と文字色) ++メインメニュー、サブメニューのhover時のそれぞれの背景色と文字色) 4種類×2の8つの色を決めておかなければいけません。けっこう厄介でした・・・最終的には配色決めで懲りてしまったので、モノトーンで書いていきます(笑) *HTML記述 liタグのなかにliタグを入れるのが特徴です。 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="reset.css"> <link rel="stylesheet" type="text/css" href="style.css"> <title>メニュー</title> </head> <body> <div class="menunav"> <ul id="menu"> <li><a href="#">ホーム</a></li> <li><a href="#">新着情報</a> <ul class="sub"> <li><a href="#">新着</a></li> <li><a href="#">プレスリリース</a></li> <li><a href="#">重要情報</a></li> </ul> </li> <li><a href="#">試験概要</a> <ul class="sub"> <li><a href="#">ITパスポート</a></li> <li><a href="#">基本情報技術者試験</a></li> <li><a href="#">応用情報技術者試験</a></li> </ul> </li> <li><a href="#">過去問広場</a> <ul class="sub"> <li><a href="#">午前問題</a></li> <li><a href="#">午後問題</a></li> <li><a href="#">午前問題解説コンテンツ</a></li> <li><a href="#">午後問題解説コンテンツ</a></li> </ul> </li> <li><a href="#">お問い合わせ</a> <ul class="sub"> <li><a href="#">よくあるご質問</a></li> <li><a href="#">お問い合わせ先</a></li> </ul> </li> </ul> </div> </body> </html> *CSS記述 @charset "utf-8"; /* CSS Document */ .menunav ul#menu { margin: 20px 20px 0px 20px; padding: 0px; height: 40px; } .menunav ul#menu li { float: left; width: 180px; height: 40px; list-style-type: none; position: relative;/*subメニューを縦方向にメニューを並べるために必要*/ } .menunav ul#menu a { background: #000; color: #FFF; line-height: 40px; text-align: center; text-decoration: none; display: block; width: 100%; height: 100%; } .menunav ul#menu a:hover { background: #CCC; color: #000; } .menunav ul#menu ul.sub { border-width: 1px 1px 0px 1px; border-style: solid; border-color: #666; margin: 0px; padding: 0px; display: none; position: absolute; } .menunav ul#menu ul.sub li { width: 195px; /*180pxよりちょっと大きくしておく。*/ height: 35px; border-width: 0px 0px 1px 0px; border-style: solid; border-color: #000; } .menunav ul#menu ul.sub li a { background: #FFF; color: #000; line-height: 35px; text-align: left; text-indent: 5px; } .menunav ul#menu ul.sub li a:hover { background: #CCC; color: #000; } *jQuery headタグ内に以下のものを書きます。 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script type="text/javascript"> $(function(){ $('#menu li').hover(function(){ $('ul',this).slideDown();//上から落ちてくるようならslideDown,普通にみせるならshow }, function(){ $('ul',this).hide();//すぐに隠すならhide,上に上がっていくようにするならslideUP }); }); </script> *まとめ position:relativeとposition:relativeを忘れてはいけません。 色の扱いが劇的に増えるため、色をあらかじめ決めておくとよいです。 今回は白、黒、灰色の組み合わせで行っていきましたが、&color(red){カラーになると配色のことを考えながら作っていくこと}が必要です。 また、jQueryのほうでは、&color(red){show,hideのみでただ単に「表示、非表示」ができますが、slideUP,slideDownを使えば「上にあがっていったり、下に下がっていったり」すること}ができます。

表示オプション

横に並べて表示:
変化行の前後のみ表示: