スマートフォンやタブレットで見たときのメニュー表現[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の方がスマート?かも
ちなみに≡は≡で表示しています。




