【问题标题】:Off-canvas menu not showing in iOS browsersiOS 浏览器中未显示画布外菜单
【发布时间】:2019-05-24 07:08:29
【问题描述】:

这个问题在 SO 上反复被问到,但没有一个答案对我有用,所以我发布了这个。 我无法让画布外菜单在 iPhone iOS 11 Safari 和 Chrome 上运行,尽管它适用于桌面和 Android Chrome。

$('#nav-header .nav-collapse-btn').on('click',function(){
    $('#main-nav').toggleClass('nav-collapse');
});
#main-nav {
    position: fixed;
    top: 0;
    left: 0;
    bottom: 0;
    max-width: 100%;
    width: 0%;
    margin-left: 0;
    padding-top: 30px;
    overflow-x: hidden;
    overflow-y: auto;
    background: #07090c;
    -webkit-box-shadow: 5px 0px 6px -5px rgba(0, 0, 0, 0.4);
    box-shadow: 5px 0px 6px -5px rgba(0, 0, 0, 0.4);
    -webkit-transform: translateX(-100%);
    -ms-transform: translateX(-100%);
    transform: translateX(-100%);
    -webkit-transition: 0.2s all;
    transition: 0.2s all;
    z-index: 99;
}

#main-nav.nav-collapse {
    width: 100%;
    -webkit-transform: translateX(0%);
    -ms-transform: translateX(0%);
    transform: translateX(0%);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="nav-header">
  <div class="navbar navbar-expand-md">
    <nav id="main-nav">
      <ul class="main-nav nav navbar-nav flex-nowrap">
        <li><a href="#" class="nav-link">...</a></li>
         ...
      </ul>
    </nav>
   </div>
   <button class="nav-collapse-btn">...</button>
</div>

我试过了: 将 'touchstart' 事件添加到折叠按钮,但它不起作用。

所以我认为问题在于 css transformtransition。但是我已经为所有这些代码添加了 -webkit- 前缀,我想不出更多的东西了。您可以在我的site 上查看此行为。

TL;DR 非画布菜单在 iOS 浏览器上不起作用,我认为问题在于 css transformtransition。帮我修改代码。

编辑: 这不是转换的问题。当我单击按钮时,导航链接就在那里,我可以单击它们。我只是没有看到他们。奇怪的是它只发生在 iOS Safari 上。

【问题讨论】:

  • 只是一些有助于解决问题的建议:尝试删除按钮及其父级的所有 css,以查看 css 是否以某种方式阻止了点击。尝试调整脚本,以便通过单击另一个元素来切换导航,例如内容部分(查看标题部分是否有阻塞)。另外,尝试将console.log('button clicked') 添加到事件侦听器中,以查看单击是否实际通过。在我看来,在 ios 中不知何故有东西阻塞(位于按钮顶部),在其他地方的行为方式不同。也不能点击搜索

标签: jquery css


【解决方案1】:

你能试试这个代码吗?我检查了网站,由于您使用单独的关闭按钮来关闭菜单,因此您不需要使用toggleClass,而是在 jQuery 本身中进行 css 转换。

$('.nav-collapse-btn').click(function() {
    $('#main-nav').css({
        'transform': 'translateX(0)'
    });
});
$('.nav-close-btn').click(function() {
    $('#main-nav').css({
        'transform': 'translateX(-100%)'
    });
});
#main-nav {
    position: fixed;
    top: 0;
    left: 0;
    bottom: 0;
    width: 100%;
    margin-left: 0;
    padding-top: 30px;
    background: #07090c;
    -webkit-box-shadow: 5px 0px 6px -5px rgba(0, 0, 0, 0.4);
    box-shadow: 5px 0px 6px -5px rgba(0, 0, 0, 0.4);
    -webkit-transform: translateX(-100%);
    -ms-transform: translateX(-100%);
    transform: translateX(-100%);
    -webkit-transition: 0.2s all;
    transition: 0.2s all;
    z-index: 99;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="nav-header">
  <div class="navbar navbar-expand-md">
    <nav id="main-nav">
      <ul class="main-nav nav navbar-nav flex-nowrap">
        <li><a href="#" class="nav-link">Link</a></li>
        <li><a href="#" class="nav-link">Link</a></li>
        <li><a href="#" class="nav-link">Link</a></li>
      </ul>
      
       <button class="nav-close-btn">Close</button>
    </nav>
   </div>
   <button class="nav-collapse-btn">Open</button>
</div>

【讨论】:

  • @user8703143 你能试试在你的 ios 设备上检查derrain.com/test.html 并告诉我它是否工作正常吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-28
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多