我为一个响应式网站创建了一个菜单。
当在宽度小于768px的普通浏览器中查看站点时,导航菜单项会堆叠并隐藏。用户需要单击切换标签以显示导航项目。当浏览器宽度大于992px时,导航菜单项显示为一行。
当我在iPad上打开网站时,我的问题就出现了。如果用户首先以纵向模式(宽度= 768px)在iPad上打开站点,然后单击切换标签以显示导航菜单,然后再次单击切换标签以隐藏导航菜单。现在,如果用户将iPad旋转到横向模式(宽度> 768px),导航菜单将消失。
但是,如果用户在纵向模式下打开iPad上的站点,然后将其旋转到横向模式,而不单击切换标签,则导航菜单在横向模式下可用。
我正在使用基本的jQuery。我认为发生这种情况是因为使用"fadeToggle“时,我使用的是display none和display block,而当我旋转平板电脑时,它无法识别分辨率发生了变化。
我该如何解决这个问题?提前谢谢。
//Open and close Nav
$(document).ready(function() {
$(".open-nav").click(function() {
$(".main-nav").fadeToggle(500);
$(".open-nav").css("display", "none");
$(".close-nav").css("display", "block");
});
$(".close-nav").click(function() {
$(".main-nav").fadeToggle(500);
$(".close-nav").css("display", "none");
$(".open-nav").css("display", "block");
});
});header {
width: 100%;
height: 90px;
position: fixed;
top: 0;
left: 0;
background-color: #FFF;
z-index: 9999;
}
.open-nav {
width: 60px;
height: 40px;
background-color: red;
display: none;
text-align: center;
}
.close-nav {
width: 60px;
height: 40px;
background-color: green;
display: none;
text-align: center;
}
.main-nav {
float: right;
height: 50px;
margin-top: 20px;
}
.main-nav ul {
list-style-type: none;
}
.main-nav ul li {
float: left;
padding: 0 15px;
}
.main-nav ul li a {
font-family: "Open Sans", Arial, Helvetica, sans-serif;
display: block;
margin: 0;
line-height: 50px;
font-size: 16px;
color: #000;
text-decoration: none;
}
.main-nav ul li .btn-primary {
color: #FFF;
font-size: 18px;
}
.main-nav ul li a.btn-primary:hover {
border-bottom: none;
}
.main-nav ul li a:hover {
border-bottom: solid #ff0054 2px;
}
.active {
border-bottom: solid #ff0054 2px;
}
/* Medium devices (tablets, 768px and 992px)*/
@media (min-width: 768px) and (max-width: 992px) {
a.open-nav {
display: block;
margin-top: 20px;
}
a.close-nav {
display: none;
margin-top: 20px;
z-index: 1;
}
.main-nav {
display: none;
width: 100vw;
height: 100vh;
background-color: #fff;
float: none;
z-index: 0;
position: relative;
left: 50%;
right: 50%;
margin-left: -50vw;
margin-right: -50vw;
padding: 0;
}
.main-nav ul {
width: 100%;
padding: 0;
padding-top: 25%;
}
.main-nav ul li {
float: none;
text-align: center;
padding: 0;
}
.main-nav ul li a {
display: inline-block;
font-size: 26px;
margin: 0 30px 60px 30px;
}
}<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<header>
<div class="container">
<a class="open-nav col-xs-3 hidden-md" title="Menu">Click to Open</a>
<a class="close-nav col-xs-3 hidden-md" title="Menu">Click to Close</a>
<nav class="main-nav">
<ul>
<li><a href="index.html" class="active" title="Home">Home</a></li>
<li><a href="#" title="Link 1">Link 1</a></li>
<li><a href="#" title="Link 2">Link 2</a></li>
</ul>
</nav>
</div>
</header>
发布于 2019-06-06 18:19:32
回答我自己的问题。以防其他人也有同样的问题。
我解决了在CSS代码上添加另一个媒体查询的问题:
/* Large devices and landscape tablets (tablets or desktops, 993px and 1366px)*/
@media screen and (orientation: landscape) and (min-width: 993px) and (max-width: 1366px) {
.main-nav {
display: block!important;
}
}无论如何,谢谢你的帮助。
https://stackoverflow.com/questions/56396859
复制相似问题