スマートフォンやタブレットで見たときのメニュー表現[2]
こちらで書いた記事ではナビゲーションを単純に縦並びにしていますが、これはスマートフォンサイトで見かける三アイコンを右上に表示し、ナビゲーションをスライドして表示させるバージョンです。
パソコン用スタイル
/*********************************************** * navigation ***********************************************/ #menu_button{ display:none; } #menu_list{ display:none; } #menu_list ul{ display:none; } #navigation{ display: block; width: 1000px; margin-right: auto; margin-left: auto; height: 30px; line-height: 30px; overflow:hidden; } #navigation ul li{ list-style:none; float:left; width:20%; text-align:center; } #navigation ul li a{ display: block; background: #537EB8; color: #FFF; text-decoration: none; border: 1px solid #FFFFFF; } #navigation ul li a:hover{ filter:alpha(opacity=70); -moz-opacity:0.70; opacity:0.70; }
スマートフォン用スタイル
#navigation{ display:none; } #navigation ul{ } #navigation ul li{ } #menu_button{ float: right; width: 35px; text-align: center; font-size: 24px; padding-top: 10px; cursor:pointer; display:block; } #menu_list{ position: absolute; top: 0px; right: 0px; width: 250px; background-color: #000; filter:alpha(opacity=70); -moz-opacity:0.70; opacity:0.70; padding:10px; } #menu_list ul{ display: inline; } #menu_list ul li{ list-style:none; } #menu_list ul li a{ display: block; text-decoration: none; border-bottom: 2px dotted #DDD; color: #FFF; } #menu_list #close{ text-align:right; font-weight:bold; }
jQuery
jQuery(document).ready(function(){ //三をクリックしたら jQuery(document).on('click','#menu_button',function(){ //ナビゲーションのLI要素を取り出す var list = jQuery("#navigation ul li"); //HTMLを作る var html = '<ul>'; html += '<li><a href="#" id="close">χ</a></li>'; //閉じるボタンの分を追加 for(var i=0; i<list.length; i++){ html += '<li>'+jQuery(list[i]).html()+'</li>'; //ナビゲーションのAタグを追加 } html += '</ul>'; jQuery("#menu_list").show().html(html); //スマートフォン用のメニューへ挿入し表示する }); //閉じる jQuery(document).on('click','#close',function(e){ jQuery("#menu_list").slideUp(); e.preventDefault(); }); });
ナビゲーションのAタグ要素を取得し、タップで開くメニューにLI要素として追加しています。jQuery使ってますんで、appendで要素を追加するって手も有りますが、私はHTMLを先に作って一気に入れるって手をよく使います。多分appendの方がスマート?かも
ちなみに≡は≡で表示しています。