Angular 在屏幕改变大小(以及页面加载后)时更新DOM
我试图根据屏幕是否具有一定的大小来渲染div。当页面最初加载时,我能够做到这一点,但是当页面加载后窗口大小改变时,我不知道如何做到这一点。我希望一个div可以是“mobile”div或“!mobile”div,具体取决于当前的屏幕大小 以下是my home.component.ts文件的相关代码:Angular 在屏幕改变大小(以及页面加载后)时更新DOM,angular,Angular,我试图根据屏幕是否具有一定的大小来渲染div。当页面最初加载时,我能够做到这一点,但是当页面加载后窗口大小改变时,我不知道如何做到这一点。我希望一个div可以是“mobile”div或“!mobile”div,具体取决于当前的屏幕大小 以下是my home.component.ts文件的相关代码: import { Component, OnInit, HostListener } from '@angular/core'; export class HomeComponent impleme
import { Component, OnInit, HostListener } from '@angular/core';
export class HomeComponent implements OnInit {
mobile: Boolean;
}
ngOnInit() {
if (window.screen.width <= 615) {
this.mobile = true;
} else if (window.screen.width >= 616) {
this.mobile = false;
}
@HostListener('window:resize', ['$event'])
onResize(event) {
if (event.target.innerWidth <= 767) {
this.mobile = true;
this.ngOnInit();
} else if (event.target.innerWidth >= 768) {
this.mobile = false;
this.ngOnInit();
}
}
从'@angular/core'导入{Component,OnInit,HostListener};
导出类HomeComponent实现OnInit{
移动:布尔;
}
恩戈尼尼特(){
如果(window.screen.width=616){
this.mobile=false;
}
@HostListener('窗口:调整大小',['$event']))
onResize(事件){
if(event.target.innerWidth=768){
this.mobile=false;
这个;
}
}
下面是my home.component.html文件div:
<ngb-carousel (window:resize)="onResize($event) *ngIf="mobile">
<!-- ...additional content within mobile div -->
</ngb-carousel>
<div (window:resize)="onResize($event) *ngIf="!mobile" class="homepage-img-card row ml-5">
<!-- ...additional content within non-mobile div -->
</div>
为什么不使用基于媒体查询的CSS规则?
样式表中的一些简单媒体查询规则应该更简单,不需要浏览器脚本引擎时间或角度ngOnInit()
周期。请尝试以下操作:
/*CSS*/
ngb传送带{
显示:无;
}
.主页img卡{
显示:块;
}
@媒体屏幕和屏幕(最大宽度:767px){
ngb传送带{
显示:块;
}
.主页img卡{
显示:无;
}
}
然后您可以省去所有类型脚本。这些CSS规则就足够了,只要调整视口的大小,它们就会立即无缝地应用。为什么不使用基于媒体查询的CSS规则?
样式表中的一些简单媒体查询规则应该更简单,不需要浏览器脚本引擎时间或角度ngOnInit()
周期。请尝试以下操作:
/*CSS*/
ngb传送带{
显示:无;
}
.主页img卡{
显示:块;
}
@媒体屏幕和屏幕(最大宽度:767px){
ngb传送带{
显示:块;
}
.主页img卡{
显示:无;
}
}
然后,您可以省去所有类型脚本。这些CSS规则就足够了,只要调整视口的大小,就会立即无缝地应用这些规则。这是否回答了您的问题?不要使用javascript,请使用。详细阅读这是否回答了您的问题?不要使用javascript,请使用。详细阅读,谢谢。是的,我想只为这个使用CSS会更有意义。太好了,谢谢。是的,我想只为这个使用CSS会更有意义。