ロゴ
HOME > レスポンシブウェブデザイン > スマートフォンやタブレットで見たときのメニュー表現[2]

スマートフォンやタブレットで見たときのメニュー表現[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">&chi;</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の方がスマート?かも

ちなみに&equiv;で表示しています。