Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带画布的引导模式无法正确显示响应设计_Javascript_Angular_Canvas_Bootstrap Modal - Fatal编程技术网

Javascript 带画布的引导模式无法正确显示响应设计

Javascript 带画布的引导模式无法正确显示响应设计,javascript,angular,canvas,bootstrap-modal,Javascript,Angular,Canvas,Bootstrap Modal,在我的Angular not JS应用程序中,我使用引导模式提供一个表面HTML5画布,用户可以在其中绘制一些草图 我面临的问题是,当我将画布放在模态中时,响应性设计突然停止工作: HTML: 在设置canvasElem变量之前,模态会正确显示响应设计,但一旦我设置它,响应设计就会中断,不仅画布会从模态对话框中伸出,而且画布上方的所有其他标记(如按钮和输入)也会伸出,就像工具箱一样 canvasElem的唯一用途是: let rect = this.canvasElem.getBoundingC

在我的Angular not JS应用程序中,我使用引导模式提供一个表面HTML5画布,用户可以在其中绘制一些草图

我面临的问题是,当我将画布放在模态中时,响应性设计突然停止工作:

HTML:

在设置canvasElem变量之前,模态会正确显示响应设计,但一旦我设置它,响应设计就会中断,不仅画布会从模态对话框中伸出,而且画布上方的所有其他标记(如按钮和输入)也会伸出,就像工具箱一样

canvasElem的唯一用途是:

let rect = this.canvasElem.getBoundingClientRect();
否则我甚至不需要它,ctx变量也只用于绘图操作,比如ctx.fillRect等等,所以我真的不确定这里出了什么问题

有人知道这个问题吗?我该如何解决

更新:

我的解决方案/技巧如下:

setTimeout(() => {
  window.dispatchEvent(new Event('resize'));
}, 1);

宽度仅延迟一毫秒,现在效果非常好。

它可以简单到缺少画布的最大宽度css

canvas {  max-width: 100%; }
我做了一个简单的jsfiddle来测试它。如果没有最大宽度,您的画布将无法响应。如果你发布一个工作片段,它更容易复制


非常感谢,我刚刚为此做了另一个破解:因为网格系统在调整屏幕大小后开始工作,所以我在这里做这个:setTimeout=>{window.dispatchEventnew Event'resize';},1;
setTimeout(() => {
  window.dispatchEvent(new Event('resize'));
}, 1);
canvas {  max-width: 100%; }