首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我使用平板电脑访问网站时,导航消失(横向模式)

当我使用平板电脑访问网站时,导航消失(横向模式)
EN

Stack Overflow用户
提问于 2019-05-31 22:22:31
回答 1查看 227关注 0票数 2

我为一个响应式网站创建了一个菜单。

当在宽度小于768px的普通浏览器中查看站点时,导航菜单项会堆叠并隐藏。用户需要单击切换标签以显示导航项目。当浏览器宽度大于992px时,导航菜单项显示为一行。

当我在iPad上打开网站时,我的问题就出现了。如果用户首先以纵向模式(宽度= 768px)在iPad上打开站点,然后单击切换标签以显示导航菜单,然后再次单击切换标签以隐藏导航菜单。现在,如果用户将iPad旋转到横向模式(宽度> 768px),导航菜单将消失。

但是,如果用户在纵向模式下打开iPad上的站点,然后将其旋转到横向模式,而不单击切换标签,则导航菜单在横向模式下可用。

我正在使用基本的jQuery。我认为发生这种情况是因为使用"fadeToggle“时,我使用的是display none和display block,而当我旋转平板电脑时,它无法识别分辨率发生了变化。

我该如何解决这个问题?提前谢谢。

代码语言:javascript
复制
//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");
  });
});
代码语言:javascript
复制
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;
  }
}
代码语言:javascript
复制
<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>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-06 18:19:32

回答我自己的问题。以防其他人也有同样的问题。

我解决了在CSS代码上添加另一个媒体查询的问题:

代码语言:javascript
复制
/* 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;
    }

}

无论如何,谢谢你的帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56396859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档