【发布时间】: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 transform 和 transition。但是我已经为所有这些代码添加了 -webkit- 前缀,我想不出更多的东西了。您可以在我的site 上查看此行为。
TL;DR 非画布菜单在 iOS 浏览器上不起作用,我认为问题在于 css transform 和 transition。帮我修改代码。
编辑: 这不是转换的问题。当我单击按钮时,导航链接就在那里,我可以单击它们。我只是没有看到他们。奇怪的是它只发生在 iOS Safari 上。
【问题讨论】:
-
只是一些有助于解决问题的建议:尝试删除按钮及其父级的所有 css,以查看 css 是否以某种方式阻止了点击。尝试调整脚本,以便通过单击另一个元素来切换导航,例如内容部分(查看标题部分是否有阻塞)。另外,尝试将
console.log('button clicked')添加到事件侦听器中,以查看单击是否实际通过。在我看来,在 ios 中不知何故有东西阻塞(位于按钮顶部),在其他地方的行为方式不同。也不能点击搜索