レスポンシブ Web サイトの折りたたみメニューを作成しました。
幅が 960px 未満のブラウザでサイトを表示すると、ナビゲーション メニュー項目が積み重なって非表示になります。ナビゲーション アイテムを表示するには、トグル ボタンをクリックする必要があります。ブラウザの幅が 960px を超えると、ナビゲーション メニュー項目が一列に表示されます。
私の問題は、ユーザーが iPad でサイトを閲覧するときに発生します。ユーザーが最初に縦向きモード (幅 < 960px) の iPad でサイトを開き、トグル ボタンをクリックしてナビゲーション メニューを表示し、トグル ボタンをもう一度クリックしてナビゲーション メニューを非表示にした場合。ユーザーが iPad を横向きモード (幅 > 960px) に回転すると、ナビゲーション メニューが消えます。
ただし、ユーザーが iPad でサイトを縦向きモードで開き、トグル ボタンをクリックせずに横向きモードに回転した場合、ナビゲーション メニューは横向きモードで使用できます。
以下は、ナビゲーション メニューを表示または非表示にするために作成した JavaScript コードです。
$(document).ready(function() {
// Get the handlers
var collapseBtn = $('#nav-collapse');
var mainNav = $('#main-nav');
// Navigation menus only collapse when they are not floated
var isFloated = mainNav.children('li').css('float');
if (isFloated != 'left') {
// Add toggle button click event listener
collapseBtn.on('click', function() {
mainNav.slideToggle();
});
}
});
html コードは次のとおりです。
<nav class="col-lg-12">
<a class="nav-collapse" id="nav-collapse">Menu</a>
<ul class="clearfix" id="main-nav">
<li><a href="#">home</a></li>
<li>
<a href="#">Item 1</a>
<ul>
<li><a href="http://apple.com.au">Item 1</a></li>
<li><a href="#"Item 1</a></li>
<li><a href="#">Item 1</a></li>
<li><a href="#">Item 1</a></li>
</ul>
</li>
<li><a href="#">Item 1</a></li>
<li><a href="#">Item 1</a></li>
<li><a href="#">Item 1</a></li>
<li><a href="#">Item 1</a></li>
<li><a href="#">Item 1</a></li>
<li>
<a href="#">Item 1</a>
<ul>
<li><a href="#">Item 1</a></li>
<li><a href="#">Item 1</a></li>
<li><a href="#">Item 1</a></li>
<li><a href="#">Item 1</a></li>
</ul>
</li>
<li><a href="#">Item 1</a></li>
</ul>
</nav>
css コードは次のとおりです。
/* toggle button */
#nav-collapse {
display:block;
margin:0 auto;
padding:5px;
background-color:#CDD1F4;
text-align:center;
width:20%;
color:#ffffff;
cursor:pointer;
}
#nav-collapse:hover {
text-decoration:none;
}
/* main navigation */
ul#main-nav {
list-style:none;
padding-left:0;
display:none;
}
ul#main-nav li {
z-index:9;
}
ul#main-nav li a {
display:block;
padding-top:5px;
padding-bottom:5px;
padding-left:5px;
border-bottom:1px solid #cccccc;
}
ul#main-nav li a:hover {
text-decoration:none;
background-color:#CDD1F4;
color:#ffffff;
}
/* first level navigation */
/* second level navigation */
ul#main-nav > li > ul {
display:none;
list-style:none;
padding-left:2%;
}
@media (min-width: 960px) {
/* toggle button */
#nav-collapse {
display:none;
}
/* main navigation */
ul#main-nav, ul#main-nav ul, ul#main-nav ul li {
margin:0;
padding:0;
}
ul#main-nav {
line-height:1;
list-style:none;
display:block;
overflow:visible;
}
ul#main-nav li a {
font-size:13px;
color:#6D87C3;
display:block;
text-decoration:none;
font-family: 'pt sans',Arial,Helvetica,sans-serif;
}
ul#main-nav li a:hover {
text-decoration:none;
background-color:transparent;
color:#6D87C3;
}
/* first level navigation */
ul#main-nav > li {
float:left;
padding:0;
margin:0;
position:relative;
}
ul#main-nav > li > a {
line-height:10px;
padding:0px 12px 0px 7px;
border-right:1px solid #6D87C3;
border-bottom:none;
}
ul#main-nav > li:hover > ul {
display:block;
}
/* second level navigation */
ul#main-nav > li > ul {
display:none;
position:absolute;
}
ul#main-nav > li > ul > li {
background-image:url('../img/trans3.png');
}
ul#main-nav > li > ul > li > a {
width:220px;
padding:15px 10px;
}
ul#main-nav > li > ul > li > a:hover {
color:#ffffff;
}
}