前回はメディアクエリを使用して『既存のホームページをレスポンシブスマホ対応する方法』をご紹介しました。
レスポンシブデザインによるスマホ対応の大まかな流れがつかめたと思います。
そこで今回は、レスポンシブ対応に最適な
『jQueryを使った折りたたみ式のグローバルメニュー』についてご紹介いたします。
目次
グローバルメニュー実装の要件
PC用のレイアウトでは既存のグローバルメニューを使い、スマートフォンで表示した場合には折りたたみ式のグローバルメニューを使うようにする。
既存のホームページをレスポンシブデザインにてスマートフォンに変える事を目的としていますので、PC用のレイアウトでは既存のものをそのまま使います。
(場合によってはPC用レイアウトも含めて作り直してしまう方が良い場合もあります。)
また、グローバルメニューが3つ、4つ程度であればスマートフォン用に並び替えるだけで対応できると思います。
jQueryのグローバルメニュー実装その1
HTML内にScriptファイルを設定する
index.htmlに記述
1 2 |
<script type="text/javascript" src="common/scripts/jquery.js"></script> <script type="text/javascript" src="common/scripts/menu/tool.js"></script> |
HTMLにjQuery
のファイルとtool.js
のファイルを読み込む記述を追加します。
tool.jsを作成する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
$(function(){ var agent = navigator.userAgent; var list = $(".mod_nav ul"); function menuslide(){ //メニュー表示非表示 $(".mod_nav p.navtitle").click(function(){ if($(list).css("display")=="none"){ $(list).slideDown("fast"); }else{ $(list).slideUp("fast"); } }); } if(agent.search(/iPhone/) != -1){ menuslide(); }else if(agent.search(/Android/) != -1){ menuslide(); }else{ //resize $(window).resize(function(){ var w = $(window).width(); var x = 600; if (w <= x) { $(list).css("display","none"); } else { $(list).css("display","block"); } }); menuslide(); } }); |
tool.js
の中身を設定します。
jQueryのグローバルメニュー実装その2
HTMLにスマートフォン用グローバルメニューを設置する
index.htmlに記述
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<div class="navigation"> <ul> <li><a href="#">ホーム<span>home</span></a></li> <li><a href="#">ギャラリー<span>gallery</span></a></li> <li><a href="#">お客様の声<span>review</span></a></li> <li><a href="#">会社概要<span>outline</span></a></li> <li><a href="#">スタッフ紹介<span>staff</span></a></li> <li><a href="#">スタッフブログ<span>blog</span></a></li> </ul> </div> <!-- ↑↑↑ ここまで既存のグローバルメニュー ↑↑↑ --> <!-- ↓↓↓ ここからスマホ用の新設グローバルメニュー ↓↓↓ --> <nav class="mod_nav"> <p class="navtitle">MENU</p> <ul> <li><a href="#">ホーム</a></li> <li><a href="#">ギャラリー</a></li> <li><a href="#">お客様の声</a></li> <li><a href="#">会社概要</a></li> <li><a href="#">お問い合わせ</a></li> <li><a href="#">スタッフ紹介</a></li> <li><a href="#">スタッフブログ</a></li> </ul> </nav> |
HTML内に既存のメニューとは別にスマートフォン用のグローバルメニューを追加し、既存のメニューに.navigation
のclass指定をし、
スマートフォン用メニューは
1 |
<nav class="mod_nav"></nav> |
でくくります。
jQueryのグローバルメニュー実装その3
CSSを設定し完成!
style.cssに追記する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
/* mod_nav スマホ用グローバルメニュー -----------------------------------------*/ .mod_nav { display: none; } @media print, screen and (max-width: 600px) { .navigation { display: none; visibility: hidden; } .mod_nav { display: block; } } /* mod_nav -----------------------------------------*/ .mod_nav { z-index: 1000; position: fixed; top: 0; left: 0; height: 45px; width: 100%; background:transparent url('../images/menu/bg_nav.png') repeat-x left top; } @media screen and (max-width:600px) { .mod_nav { height: auto; } } .mod_nav p.navtitle { display: none; } @media screen and (max-width:600px) { .mod_nav p.navtitle { cursor: pointer; display: block; line-height: 45px; color: #FFF; padding: 0 0 0 0px; font-size: 110%; font-weight: bold; text-align: center; background: transparent url('../images/menu/bg_menu.png') no-repeat 9px 9px; } } .mod_nav ul { margin: 0 auto; width: 960px; } @media screen and (max-width:600px) { .mod_nav ul { width: 100%; display: none; } } .mod_nav ul li { float: left; width: 100px; line-height: 45px; text-align: center; } @media screen and (max-width:600px) { .mod_nav ul li { float: none; background-color: #8F8F8F; width: 98%; padding: 0 1% 0 1%; text-align: left; } } .mod_nav ul li a { display: block; color: #FFF; } @media screen and (max-width:600px) { .mod_nav ul li a { } } .mod_nav ul li.current a { font-weight: bold; } .mod_nav ul li a:link {color:#FFF; text-decoration:none;} .mod_nav ul li a:visited {color:#FFF; text-decoration:none;} .mod_nav ul li a:hover {color:#FFF; text-decoration:none; background-color:#AAAAAA;} .mod_nav ul li a:active {color:#FFF; text-decoration:none; background-color:#AAAAAA;} /* mod_nav ここまで -----------------------------------------*/ |
最後にCSSの設定をします。ここでのポイントは、
PC用のグローバルメニューとスマートフォン用のグローバルメニューを2つ用意し、それぞれの画面解像度にあわせて表示/非表示を切り替える部分です。
2つ用意した理由として、
- PC用のレイアウトを全く変更すること無くスマートフォン用のメニューを設置できる。
- スマートフォン用のメニューの数や項目名を柔軟に変更・追加できる。
事があげられます。
例として、上記の場合ではスマートフォン用のメニューに「お問い合わせ」の項目を追加しています。
まとめ
前回と今回の記事でスマートフォン対応の「とある1つの手法」の一連の流れがご紹介できたと思います。
今回は紹介していない部分で、細かいひと手間やちょっとした工夫でスマートフォンでの見やすさ、操作のしやすさが変わってくると思います。
スマートフォン対応に限らず、手間や工夫を惜しまずより良いホームページ作りを行っていければと思います。