javascript - 检测浏览器是否在没有页面重新加载的情况下移动
问题描述
Click Me
如果我的 flexbox 布局是移动的,我试图弄清楚当您单击时如何关闭侧边栏。如果我通过已经知道它是移动的方式在移动模式下刷新浏览器,我可以关闭侧边栏isMobile
,但是如果用户有浏览器并将宽度缩小到移动视图,我也希望它关闭。npmjs 库isMobile不知道它是移动的,除非页面重新加载。我很感激任何帮助!
<mat-sidenav-container class="sidebar-container">
<mat-sidenav [(opened)]="isOpen" #sidenav id="sideNav" mode="side" ngif="filtersVisible" opened>
<div class="loading">
</div>
<div id="spacing1"></div>
<mat-nav-list>
<div id="topLinks">
</div>
<div class="loading">
<ngx-spinner id="loadingIcon" *ngIf="isLoading" type="ball-spin-clockwise" size="medium" color="#3071a9">
</ngx-spinner>
</div>
<a mat-list-item class="navList"><label routerLink="/store" (click)="closeSidebar()" onclick="return false;"
class="menuOptions" routerLinkActive="active-list-item"><a href="#">Click Me</a></label></a>
<hr>
</label></a>
<hr *ngIf="this.role === 'Admin'">
</mat-nav-list>
</mat-sidenav>
<mat-sidenav-content>
<div id="spacing"></div>
<router-outlet>
</router-outlet>
</mat-sidenav-content>
</mat-sidenav-container>
closeSidebar() {
if (this.mobile || this.tablet) {
this.isOpen = false;
this.store.dispatch({ type: "false" });
}
}
解决方案
试试这个:服务-
import { Injectable } from '@angular/core';
const SMALL_WIDTH_BREAKPOINT = 720;
@Injectable({
providedIn: 'root'
})
export class ScreenSizeService {
private mediaMatcher: MediaQueryList =
matchMedia(`(max-width: ${SMALL_WIDTH_BREAKPOINT}px)`);
constructor(
) {}
isScreenSmall(): boolean {
return this.mediaMatcher.matches;
}
}
在组件中使用:
isScreenSmall: boolean;
@HostListener('window:resize') onresize() {
this.isScreenSmall= this.service.isScreenSmall();
}
constructor(private service: ScreenSizeService
) { }
推荐阅读
- javascript - 将 JSON 字符串从 iOS WKWebKit 传递给 JS ,总是失败
- excel - Excel VBA 如果 rngcell= 和下一个单元格 = 那么这个单元格 = 和下一个单元格 =
- .net - 如何过滤特定用户的视图元素?
- c# - 尝试将数据导入 EPiServer 时出现 400 错误
- django - 在不使用 django Forms 的情况下保存 POST 信息是一个坏主意吗?
- iis - IIS 8 上的反向代理
- asp.net - 为什么代码块中的 Razor 语法不能正确取消引用?
- javascript - 如何解决奇怪的问题覆盖行为?
- swift - 带有原生 Swift 应用程序的 Apple Watch 和 Fitbit Watch
- firebase - 基于firebase中相关参考的查询?