angular - 侧面板未在 DOM 外部单击(Angular 6)上的 IOS 设备中关闭
问题描述
在 IOS 设备上单击 DOM 时,布局侧面板正在关闭:
@ViewChild('closeContainer') LeftMenuObj;
@HostListener('document:click', ['$event']) clickedOutside($event)
{
if (this.LeftMenuObj != undefined && this.LeftMenuObj != null
&& !this.LeftMenuObj.nativeElement.contains($event.target))
{
console.log('click outside');
document.getElementById("LeftMenu").classList.add("hide");
}
else if (this.LeftMenuObj != undefined && this.LeftMenuObj != null
&& this.LeftMenuObj.nativeElement.contains($event.target))
{
console.log('click inside');
document.getElementById("LeftMenu").classList.remove("hide");
}
}
解决方案
因为您说它适用于所有其他设备并且您的代码看起来不错,所以我认为问题的根源是原始元素边界。这意味着,对于您希望检测外部点击的元素查询样式中的 IOS 设备,宽度或高度设置为大于其他媒体查询。或者也许是包装上的填充物。为了检测,我建议在元素上放置红色背景颜色,在父包装上放置蓝色背景颜色。这样,您可以检测元素的边界在哪里,以及您是否真的单击“外部”或仍在其上。通过将其放入 style.css 中,还有一种很好的调试和查看边界的方法:
color: red !important;
outline: solid limegreen 1px !important;
background: black !important;
推荐阅读
- python - 如何在 Django,def 视图中获取某些项目
- firebase - 即使我取消链接,电子邮件仍然有价值 - Firebase
- mysql - 2 如何在 NodeJS 和 MySQL 中的 .map() 函数下对多个查询和查询使用 Async Await
- html - HTML / CSS - 如何阻止字体在倾斜形状内变为“斜体”?
- eclipse - 尝试运行项目时无法选择 Tomcat apache 服务器
- oracle - Oracle 连接信息 - 风险?
- node.js - Github 操作:NPM CI 错误:无法从 piscina 访问 nice-napi
- reactjs - React/Typescript 无法将 svg 文件作为组件导入
- sql - 查找没有状态的记录
- javascript - 在纯 js 中的动态有序列表中,使用
- 和
- 标签作为输入,我无法访问数组内对象的属性