UIkit的Offcanvas侧边栏怎么点击外部自动关闭?
我在用UIkit做移动端菜单,用了Offcanvas组件,但发现点侧边栏外面区域不会自动收起,体验很不好。官方文档好像没说清楚这个怎么开。
我试过加data-uk-offcanvas属性,也试了data-overlay,都不行。是不是还要额外写JS?下面是我的代码:
<button type="button" uk-toggle="target: #offcanvas-nav">Menu</button>
<div id="offcanvas-nav" uk-offcanvas="overlay: true; mode: push">
<div class="uk-offcanvas-bar">
<ul class="uk-nav uk-nav-default">
<li><a href="#" rel="external nofollow" rel="external nofollow" >Home</a></li>
<li><a href="#" rel="external nofollow" rel="external nofollow" >About</a></li>
</ul>
</div>
</div>
overlay: true的情况下,点击遮罩层默认就应该自动关闭。你遇到不生效的情况,大概率是以下几种原因:最可能的原因:容器嵌套问题
Offcanvas的容器不能嵌套在某些元素里面,必须直接放在
<body>下。如果你把整个结构放在了另一个div里面,可能会导致遮罩层的点击事件被拦截。检查一下你的HTML结构,确保是这个样子:
如果结构没问题还是不行,可以试试手动绑定
UIkit 3里可以这样写:
或者更简单的方式,用事件委托:
关于flip参数
如果你是想从右侧切换到左侧,可以加
flip: true,但这个跟点击外部关闭没关系。你先检查一下HTML结构是不是平铺在body下的,很多人是把Offcanvas嵌套在header或者nav容器里导致的问题。如果结构没问题,告诉我具体情况,我再帮你看。