jquery - iOS 浏览器中未显示画布外菜单
问题描述
这个问题在 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-前缀,我想不出任何进一步的事情了。您可以在我的网站上查看此行为。
TL;DR Off-canvas menu 在 iOS 浏览器上不起作用,我认为问题在于 css transform和transition。帮我修改代码。
编辑: 这不是转换的问题。当我单击按钮时,导航链接就在那里,我可以单击它们。我只是没有看到他们。奇怪的是它只发生在 iOS Safari 上。
解决方案
你能试试这个代码吗?我检查了网站,由于您使用单独的关闭按钮来关闭菜单,因此您不需要使用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>
推荐阅读
- swift - 使用 UserDefaults 更新数据模型
- lua - 设置私有 luarocks 存储库
- sql-server - SQL Server 登录更改表名所需的权限是什么?
- wordpress - bbpress 代码显示主题总数
- node.js - 将值 [object%20Object] 添加到请求而不是请求参数
- twig - Patternlab / Twig 变量插值不适用于 json 中的字符串
- reactjs - 自定义导航器中的嵌套导航器?导致多个路由器
- spring-cloud-stream - Spring Cloud Stream 多个 kafka binder 配置恢复为默认 binder
- swift - 我可以使用相同的关联类型声明两个协议吗?
- android - 安装fcm插件后离子框架googleplay服务错误