Angular:根据浏览器缩放比例,自适应窗口大小

这篇具有很好参考价值的文章主要介绍了Angular:根据浏览器缩放比例,自适应窗口大小。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

实际生产过程中,客户有时会提出一些界面优化的需求。拿到需求后,你会发现与前端框架设计理念背道而驰,但也要尽量满足,因为客户就是上帝。

前不久,就接到一个优化需求,客户要求缩放屏幕,界面要自动适应屏幕大小。当时我脑海里闪现了几个字:“太残暴了”!

正文

进入正式内容之前,我们首先来分析一下这个需求点。然后提取出关键词,最后找相应的技术来支持这些关键点。

需求调整浏览器缩放比例,功能界面要自动适应屏幕大小,界面高度满屏展示;

分析:提取关键字“缩放比例”、“自动适应屏幕大小

解决思路

  1. 原生JS,根据 window.onresize 自动调整大小,来完成相应要求;
  2. 项目使用Angular框架,与原生JS有所不同,需要相关技术支撑;
  3. 经调研,Angular中指令(Directive)可以实现该需求点,重点学习该技术。

概念早知道

Angular 中指令可以对元素绑定事件监听或者改变 DOM 结构而使 HTML 拥有像 jQuery 一样效果具有交互性。不同于 jQuery,Angular 设计核心思想是通过数据与模板的绑定,摆脱繁琐的 DOM 操作,而将注意力集中在业务逻辑上。

Angular 模板是动态的 。当 Angular 渲染它们时,它会根据指令对 DOM 进行修改。

指令是一个带有"指令元数据"的类。在 TypeScript 中,要通过 @Directive 装饰器把元数据附加到类上。

在Angular中包含以下三种类型的指令:

  1. 属性指令:以元素的属性形式来使用的指令。
  2. 结构指令:用来改变DOM树的结构
  3. 组件:作为指令的一个重要子类,组件本质上可以看作是一个带有模板的指令。

定义directive.ts文件

在指定的目录下,创建指令文件,命令行方式:

ng g directive onresize

命令执行完成后, 在相应的目录中生成,onresize.directive.ts文件。

编写业务逻辑

指令中需要指定选择器,然后绑定对应的事件和属性,完整代码如下:

import {
  AfterViewInit, Component, Directive, ElementRef,
  HostBinding, HostListener, Inject, Input, Renderer2
} from '@angular/core';
import {DOCUMENT} from '@angular/common';

/**
 * 自适应窗口大小
 * @author trainer
 * @date 2023/6/1
 */
@Directive({
  selector: '[fixWindow]'
})
export class WindowResizedDirective implements AfterViewInit {
  private bodyEl;
  @Input() marginBottom = 24;
  @Input() minHeight = 400;
  // 绑定属性
  @HostBinding('style.height.px') height = 400;

  /**
   * 监听事件:窗口调整大小
   */
  @HostListener('window:resize')
  onResize() {
    // 窗口自适应大小
    let height = this.bodyEl.getBoundingClientRect().height - this.parentEl.nativeElement.getBoundingClientRect().top - this.marginBottom;
    if (height < this.minHeight) {
      height = this.minHeight;
    }
    // 获取内部文档大小
    let childHeight = this.parentEl.nativeElement.firstElementChild.getBoundingClientRect().height;
    /*
       console.log("child: -> " + childHeight);
       console.log("window: -> " + height);
       重置高度
    */
    this.height = childHeight > height? childHeight: height;
  }

  // 构造函数
  constructor(private parentEl: ElementRef, private ren2: Renderer2, @Inject(DOCUMENT) private doc: Document) {
  }

  ngAfterViewInit() {
    // 窗体
    this.bodyEl = this.doc.querySelector('body');
    // 延迟加载 —— 重新计算
    setTimeout(() => this.onResize(), 100);
  }
}

自定义指令导入到模块

在xx.module.ts中,引入自定义的指令 WindowResizedDirective ,如下图所示:

angular 屏幕适配,Web进修,angular.js,typescript,前端框架,学习方法,idea

使用指令

在组件中使用自定义的指令,打开对应的xx.component.html,在对应的html标签中添加指令选择器,如下所示:

angular 屏幕适配,Web进修,angular.js,typescript,前端框架,学习方法,idea

效果展示

浏览器缩放比例 100%,效果图:
angular 屏幕适配,Web进修,angular.js,typescript,前端框架,学习方法,idea
浏览器缩放比例 80%,效果图:
angular 屏幕适配,Web进修,angular.js,typescript,前端框架,学习方法,idea
浏览器缩放比例 150%,效果图:
angular 屏幕适配,Web进修,angular.js,typescript,前端框架,学习方法,idea

小结

总体来说,只要客户需求不太苛刻,都是有解决方案的。就像前几年,某公司产品经理对开发人员提过分需求,被暴打的事件,那种需求是真的没法做,因为目前技术都无法支撑。今天就分享到这里吧!

温情提示如果你也有梦想,还想继续行走在程序设计这条道路上,就不要止步不前!每天学习积累经验,有助于你更好的成长和发展,加油吧,朋友们!

感谢您读完了进修者的内容分享,欢迎留言区一起聊聊天,聊聊关于您对“Angular:根据浏览器缩放比例,自适应窗口大小”有什么更好的想法!

我是进修者,期待与您肩并肩,一起进化成长!
angular 屏幕适配,Web进修,angular.js,typescript,前端框架,学习方法,idea文章来源地址https://www.toymoban.com/news/detail-765025.html

到了这里,关于Angular:根据浏览器缩放比例,自适应窗口大小的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity: WebGL发布后在浏览器上运行时窗口大小自适应

     这个效果是根据19:6(也就是1920:1080的页面大小来设计的) 整体来说修改以下两个文件来进行达成效果预览,第一个是index.html、第二个是TemplateData文件下的style.css文件 修改对比  其中上图一段注释的脚本是webgl进入全屏状态的的脚本,就是显示下图的脚本(去掉就不显示

    2024年02月16日
    浏览(49)
  • Selenium根据Chrome浏览器版本自动下载/更新驱动chromedriver.exe

    个人经常使用到 selenium 来控制浏览器进行相关的操作,但是 Chrome浏览器 经常会自动更新,导致已有的 驱动程序chromedriver.exe 失效,需要重新下载。 以前尝试过禁止Chrome浏览器更新,但是这并不是很好的解决方案。 于是换了个方向,既然Chrome浏览器会自动更新,那么在我使

    2024年02月09日
    浏览(70)
  • Selenium webdriver_manager根据浏览器版本自动下载对应驱动程序

    webdriver_manager是什么? webdriver_manager 是 Python 中的一个库,用于管理 Web 驱动程序。它的作用是自动下载和设置不同浏览器(如 Chrome、Firefox、Edge 等)的 Web 驱动程序,以便在自动化测试中使用这些浏览器。 在进行 Selenium 测试时,需要一个与浏览器相匹配的 Web 驱动程序,以

    2024年02月11日
    浏览(48)
  • Selenium根据Chrome浏览器 版本自动下载/更新驱动chromedriver.exe webdriver_manager库

    Selenium提供了一个webdriver_manager库,可以帮助自动下载和更新Chrome浏览器的驱动程序chromedriver.exe。您可以按照以下步骤操作: 安装webdriver_manager库。可以在命令行或终端中运行以下命令进行安装: 在Selenium Python脚本中,导入webdriver_manager并使用ChromeDriverManager类来创建ChromeDri

    2024年02月16日
    浏览(59)
  • 前端css + js +vue +element-ui 实现响应式布局,根据浏览器窗体大小自动响应

    我的环境是element-ui vue版的,其他的也可以,主要是css和js的内容 首先在data中定义一个对象 其实就是css的样式,不过放在了js 里面而已 这里css设置了两个属性 一个是transform 这个属性对div标签的缩放作用,当浏览器窗口或者屏幕大小改变时,就调整这个属性的值,来等比缩放

    2024年02月13日
    浏览(58)
  • Unity 工具之 UniWebView 内嵌网页/浏览器到应用中,并且根据UGUI大小放置(简单适配UGUI)

    目录 Unity 工具之 UniWebView 内嵌网页/浏览器到应用中,并且根据UGUI大小放置(简单适配UGUI) 一、简单介绍 二、UniWebView 组件上的几个参数属性选项介绍 三、一些关键接口介绍 四、Transition 五、Memory Management(内存管理) 六、Messaging System 七、注意实现 八、效果预览 九、实现

    2024年01月24日
    浏览(40)
  • 前端(angular)在谷歌(chrome)浏览器使用高德地图api定位报错超时geolocation time out ,能定位但不安全的方法

    已知信息整合 正如大家搜到的大佬说的原因是chrome浏览器本身的问题。我换成edge就可以。 高德地图给出的地图定位api的常见问题,这是\\\'另外还有个别浏览器(如google Chrome浏览器等)本身的定位接口是黑洞\\\' 以下是能定位但不安全的方法 连接上了外网谷歌浏览器定位是定位

    2024年01月23日
    浏览(46)
  • Selenium调用使用360浏览器,QQ浏览器,遨游浏览器,猎豹浏览器,Chromium

    国产的360安全浏览器,360急速浏览器,QQ浏览器,遨游浏览器甚至新版还未上市的Edge浏览器都是基于Chrome浏览器的开源版本Chronium开发来的。所以360浏览器可以理解为一个定制的Chrome浏览器,最新360安全浏览器是基于Chromium 63版本的,落后正式的Chrome版本。 我们下载对应的2

    2024年02月06日
    浏览(60)
  • 浏览器:浏览器指纹

    一、引子 场景一、绑定用户与浏览器(设备),比如某一个网站的账号给到用户,用户只能在自己的电脑的某浏览器使用。 场景二、精准推送广告。 场景三、公司做营销活动,防止活动奖品被程序薅羊毛。 等等场景我们有什么技术方法实现或避免呢,本文介绍浏览器指纹来

    2024年02月06日
    浏览(61)
  • 浏览器原理 之 浏览器安全

    XSS 攻击,即跨站脚本攻击(Cross-Site Scripting),是一种常见的网络安全漏洞,它允许攻击者将恶意脚本注入到其他用户浏览的正常网页中。这些恶意脚本通常以 JavaScript 形式出现,并在用户的浏览器中执行。执行的结果可以是窃取用户的cookies、会话令牌,或者对用户的账户进

    2024年04月25日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包