スマートフォンやタブレットで見たときのメニュー表現[2]
こちらで書いた記事ではナビゲーションを単純に縦並びにしていますが、これはスマートフォンサイトで見かける三アイコンを右上に表示し、ナビゲーションをスライドして表示させるバージョンです。
パソコン用スタイル
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 | /*********************************************** * 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 ; } |
スマートフォン用スタイル
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 | #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
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 | 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の方がスマート?かも
ちなみに≡は≡で表示しています。