首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在angular 8中为HTML5画布动态设置clientHeight和clientWidth?

在Angular 8中为HTML5画布动态设置clientHeight和clientWidth,可以通过以下步骤实现:

  1. 在组件的HTML模板中,使用ViewChild装饰器获取到画布元素的引用。例如,给画布元素添加一个标识符#canvas
代码语言:txt
复制
<canvas #canvas></canvas>
  1. 在组件的类中,使用@ViewChild装饰器获取到画布元素的引用,并创建一个Renderer2实例。
代码语言:txt
复制
import { Component, ViewChild, ElementRef, Renderer2 } from '@angular/core';

@Component({
  selector: 'app-your-component',
  templateUrl: './your-component.component.html',
  styleUrls: ['./your-component.component.css']
})
export class YourComponent {
  @ViewChild('canvas', { static: true }) canvas: ElementRef;

  constructor(private renderer: Renderer2) { }
}
  1. 在组件的ngAfterViewInit生命周期钩子中,使用Renderer2设置画布的clientHeightclientWidth属性。
代码语言:txt
复制
ngAfterViewInit() {
  const canvasElement = this.canvas.nativeElement;
  const clientHeight = canvasElement.clientHeight;
  const clientWidth = canvasElement.clientWidth;

  this.renderer.setAttribute(canvasElement, 'height', clientHeight.toString());
  this.renderer.setAttribute(canvasElement, 'width', clientWidth.toString());
}

通过以上步骤,我们可以在Angular 8中动态设置HTML5画布的clientHeightclientWidth属性,使其适应父容器的大小。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

重新认识下网页水印

div 根据水印容器的大小动态生成div,div内可以任意设置文本样式图片,借助userSelect禁止用户选中文本水印; const addDivWaterMark = (el, text) =>...= Math.ceil(clientHeight / 100); // 根据容器宽高动态生成div for (let i = 0; i < column * rows; i++) { const...opacity 设置很低时,视觉上基本无法看到水印内容,但是通过修改画布的 rgba 值,可以使水印内容显示出来。...选择固定的一个色值例如R,判断画布R值的奇偶,将其重置0或者255,低透明的内容就便可以显示出来了。...用画布水印后的画布绘制的像素进行ArrayBuffer对比,在存在水印像素的位置(水印画布透明度不为0)修改图片画布的奇偶,这样通过上面指定色值奇偶去解码时,修改的文本像素就会被显示出来; const

20040

手把手教你利用JS给图片打马赛克

效果演示 Canvas 简介 HTML5 标签用于绘制图像(通过脚本,通常是 JavaScript) 不过, 元素本身并没有绘制能力(它仅仅是图形的容器) - 您必须使用脚本来完成实际的绘图任务 get...,该对象提供了用于在画布上绘图的方法属性 本手册提供完整的 getContext("2d") 对象属性方法,可用于在画布上绘制文本、线条、矩形、圆形等等 标记 SVG 以及 VML 之间的差异:...: context.drawImage(img,x,y); 复制代码 JavaScript 语法 2: 在画布上定位图像,并规定图像的宽度高度: context.drawImage(img,x,y,...5.为了统一,设置画布的宽高图片的宽高 canvas.setAttribute('height', height) ctx.drawImage(this...obj.data[4 * (y * w + x) + 3]; return color; } 复制代码 嗯,我们离成功不远拉,最后一步就是生成图片 好在 canavs 给我们提供了直接的方法,可以直接将画布导出

1.4K20

H5页面适配及微信默认字号问题的最佳实践

"initial-scale=1,maximum-scale=1,minimum-scale=1"> 动态设置 html 的 font-size var clientWidth = document.documentElement.clientWidth...横版页面的 rem 适配 上面第二部分通过动态设置 html 的 font-size 已经实现了页面随设计稿比例缩放,这种方式是页面宽度 100% 撑满设备宽度的,但是很多情况下,我们更希望部分横版页面能够高度撑满设备高度...,而左右部分留白,此时有两种方式可以实现: html 的 font-size 依据页面高度进行设置,假设横版设计稿高度 375px var clientHeight = document.documentElement.clientHeight...htmlFontSize / instanceWidth : 1 return scale } // 设置 html 用于处理 rem 的 font-size 页面二次缩放 function...clientWidth || !clientHeight) return var calWidth = maxWidth > 0 ?

3K140

document.documentElement.clientHeight「建议收藏」

; s = ” 网页可见区域高:” document.body.clientHeight; s = ” 网页可见区域宽:” document.body.offsetWidth ” (包括边线滚动条的宽...而在公司项目当中: Opera仍然使用 document.body.clientWidth document.body.clientHeight 可是IEFireFox则使用 document.documentElement.clientWidth...) 而如果没有定义W3C的标准,则 IE: document.documentElement.clientWidth ==> 0 document.documentElement.clientHeight...==> 0 FireFox: document.documentElement.clientWidth ==> 页面对象宽度(即BODY对象宽度加上Margin宽)document.documentElement.clientHeight...发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

2.7K10

用初中数学知识撸一个canvas环形进度条

,left设置正负值会发生什么变化),而且原点(0, 0)是在盒子(比如说canvas)的左上角哦。...画圆环 画文字 调用fillText绘制文字,利用clientWidth/2clientWidth/2取得中点坐标,结合控制文字对齐的两个属性textAligntextBaseline,我们可以将文字绘制在画布中央...ctx.clearRect(0, 0, canvas.clientWidth, canvas.clientHeight); // 求下一个目标角度 nextDeg = this.getTargetDeg...我们后续也会考虑支持更多能力,比如控制进度,数字动态增长等!具体使用方法,请参考vue-awesome-progress。 ?...就vue-awesome-progress这个组件而言,根据这个思路,我们也能迅速开发出适用于React,Angular以及其他框架生态下的组件。

91320

用初中数学知识撸一个canvas环形进度条

// deg转弧度 deg2Arc(deg) { return deg / 180 * Math.PI } 画文字 调用fillText绘制文字,利用canvas.clientWidth / 2...canvas.clientWidth / 2取得中点坐标,结合控制文字对齐的两个属性textAligntextBaseline,我们可以将文字绘制在画布中央。.../ 2, canvas.clientWidth / 2); } 画进度弧 支持普通颜色渐变色,withGradient默认为true,代表使用渐变色绘制进度弧,渐变方向我默认给的从上到下。...ctx.clearRect(0, 0, canvas.clientWidth, canvas.clientHeight); // 求下一个目标角度 nextDeg = this.getTargetDeg...我们后续也会考虑支持更多能力,比如控制进度,数字动态增长等!具体使用方法,请参考vue-awesome-progress[2]。

55220

Js窗体window大小设置(转)

网页可见区域宽:document.body.clientWidth  网页可见区域高:document.body.clientHeight  网页可见区域宽:document.body.offsetWidth...scrollLeft:设置或获取位于对象左边界窗口中目前可见内容的最左端之间的距离  scrollTop:设置或获取位于对象最顶端窗口中可见内容的最顶端之间的距离  scrollWidth:获取对象的滚动宽度...= height + padding + border  IE5.0/5.5:  clientWidth = width - border  clientHeight = height - border...  offsetWidth = width  offsetHeight = height  (CSS中的margin属性,与clientWidth、offsetWidth、clientHeight、offsetHeight...function resize(){           var win =  Ext.fly('窗体对象组件');//获得要调整的窗体,注意这里先用Ext.fly的方式来获取组件 ,如果不行再换别的,getCmp

6K20

scrollWidth,clientWidth,offsetWidth的区别

需要注意的是,DIVP这一对包含元素,都需要设置positionabsolute才能得到想要的结果,假如父元素不设置,则子元素的参照将是更上层定义过position的元素,直到整个文档; 2. posTop...posTop的数值其实top是一样的,但区别在于,top固定了元素单位px,而posTop只是一个数值(这一点可以通过alert(“top=”+id.style.top)alert(“posTop...而设置了scrollTop值12后,滑块的位置改变了,默认显示是卷过了12个象素的文本。如果设置overflowhidden,则将会无法显示顶部12个象素的文本。...而如果没有定义W3C的标准,则 IE: document.documentElement.clientWidth ==> 0 document.documentElement.clientHeight...scrollLeft:设置或获取位于对象左边界窗口中目前可见内容的最左端之间的距离 scrollTop:设置或获取位于对象最顶端窗口中可见内容的最顶端之间的距离 scrollWidth:获取对象的滚动宽度

2K20

解析offsetHeight,clientHeight,scrollHeight之间的区别「建议收藏」

其计算方式clientHeight = topPadding + bottomPadding+ height – scrollbar.height。...关于bodydocumentElement的这些属性,则完全是另外一回事: FF19 在body上设置overflow:scroll就是设置浏览器的滚动条,导致body.clientHeight永远都等于...documentElement 在IE6中,与IE7类似,虽然body上设置的滚动条并不是窗口的滚动条,但它的clientHeightoffsetHeight还算与其它浏览器想统一。...同理 clientWidth、offsetWidth scrollWidth 的解释与上面相同,只是把高度换成宽度即可。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。...发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

45810

前端基于DOM或者Canvas实现页面水印

思路整理获取宽高 (1)获取绑定元素的实际宽度clientWidth (2)获取绑定元素实际高度clientHeight (3)获取绑定元素的父元素parentElement创建盒子 (1)创建一个包裹水印图片的盒子...(2)创建一个水印图片的盒子设置盒子样式 (1)包裹水印盒子宽高绑定元素的宽高,即clientWidthclientHeight (2)水印盒子设置背景图、旋转度、宽高、点击穿透设置创建的元素的位置...}px; height: ${clientHeight}px;`);// 创建waterBg的classstylewaterBg.className = `water-mark-bg...如果原始元素本身存在 css 定位等规则,会导致整体布局效果出现影响,因为上面实现排除了原始元素没有定位,所以实现方式不是很严谨,本文具体实现实现如下:创建一个水印的容器设置 position:relative...将原有的节点放入到这个容器中同时创建一个带有水印的 dom 设置position:absolute ,实现这个水印元素覆盖到原始元素的上层,以实现水印的效果。

24610

前端基于DOM或者Canvas实现页面水印

思路整理获取宽高(1)获取绑定元素的实际宽度clientWidth(2)获取绑定元素实际高度clientHeight(3)获取绑定元素的父元素parentElement创建盒子(1)创建一个包裹水印图片的盒子...(2)创建一个水印图片的盒子设置盒子样式(1)包裹水印盒子宽高绑定元素的宽高,即clientWidthclientHeight(2)水印盒子设置背景图、旋转度、宽高、点击穿透设置创建的元素的位置(1...}px; height: ${clientHeight}px;`);// 创建waterBg的classstylewaterBg.className = `water-mark-bg...将原有的节点放入到这个容器中 同时创建一个带有水印的 dom 设置position:absolute ,实现这个水印元素覆盖到原始元素的上层,以实现水印的效果。...三、基于CanvasMutationObserver的实现方式1. 思路整理配置水印的具体样式(大小,旋转角度,文字填充)设置水印(位置)监听dom变化(防止水印删除后页面不再展示水印)2.

36450
领券