如何在flex容器中调整固定大小(画布)的元素的大小?

安东·哈拉德(Anton Harald)

HTML canvas元素可以通过HTML页面的动态自动调整大小:可能是因为其样式属性设置为百分比值,或者可能是因为它在flex容器内。因此,画布的内容也将调整大小:由于插值,画布的内容看起来模糊(分辨率降低)。

为了最大程度地保持分辨率,必须根据元素的当前像素大小来渲染画布内容。

这个小提琴显示了如何使用功能getComputedStyle来完成此操作:https ://jsfiddle.net/fx98gmu2/1/

setInterval(function() {
  var computed = getComputedStyle(canvas);
  var w = parseInt(computed.getPropertyValue("width"), 10);
  var h = parseInt(computed.getPropertyValue("height"), 10);

  canvas.width = w;
  canvas.height = h;

  // re-rendering of canvas content...
}, 2000); // intentionally long to see the effect

使用setTimeout函数,我将画布的宽度和高度更新为这些属性的计算值。

如小提琴所示,这仅在增加窗口大小时有效。每当窗口大小减小时,画布(flexbox的项目)将保持固定。

i

将其设置flex-basis为0,使其通过缩小flex-shrink,并且不强制使用任何最小宽度:

#canvas {
  flex: 1 1 0;
  min-width: 0;
}

var canvas = document.getElementById("canvas"),
    ctx = canvas.getContext("2d");
setInterval(function() {
  var computed = getComputedStyle(canvas),
      w = parseInt(computed.width, 10),
      h = parseInt(computed.height, 10);
  canvas.width = w;
  canvas.height = h;
  ctx.clearRect(0, 0, w, h);
  ctx.beginPath();
  ctx.arc(w/2, h/2, h/2, 0, Math.PI*2, true);
  ctx.stroke();
}, 2000); // intentionally long to see the effect
#container {
  border: 1px solid blue;
  width: 100%;
  display: flex;  
}
#canvas {
  border: 1px solid red;
  flex: 1 1 0;
  min-width: 0;
  height: 150px;
}
<div id="container">
  <canvas id="canvas"></canvas>
  <div>something else...</div>
</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在画布上重新绘制以调整大小而不会模糊?

来自分类Dev

如何调整伪元素中图像的大小?

来自分类Dev

基于容器元素在AngularJS指令中自动调整SVG的大小

来自分类Dev

如何在bootstrap.css中调整容器大小

来自分类Dev

CSS Flexbox:如何在保持宽高比的同时调整固定大小的图像的大小

来自分类Dev

如何在AnyLogic中自动调整GUI元素的大小?

来自分类Dev

在画布中绘制时如何调整位图的大小?

来自分类Dev

调整画布元素/形状的大小

来自分类Dev

如何在ggplot中控制画布大小?

来自分类Dev

如何调整Java Script元素的大小以适合其容器窗口

来自分类Dev

如何创建可调整大小和固定大小的容器的变体

来自分类Dev

如何在SVG元素中调整文本大小

来自分类Dev

如何在:: after伪元素中自动调整圆圈的大小?

来自分类Dev

如何在画布上移动/调整大小/旋转ContentControl?

来自分类Dev

调整flex容器大小时,如何使带有画布的div缩小?

来自分类Dev

调整元素大小以适合容器

来自分类Dev

如何调整画布大小

来自分类Dev

CSS:如何填充包含固定大小元素的动态容器?

来自分类Dev

如何在wx.notebook中调整多个画布的大小,浮点大小和重叠问题(WxPython,Matplotlib)

来自分类Dev

是否可以立即调整固定在Windows 10中开始菜单上的所有图标的大小?

来自分类Dev

调整画布元素的大小

来自分类Dev

如何使用自动布局调整固定宽度和高度的UIImageView的大小

来自分类Dev

调整Flex Spark图像大小以适合容器

来自分类Dev

如何在Android的CardView中调整图像大小以适合固定大小?

来自分类Dev

如何在窗口调整大小时重绘画布

来自分类Dev

css调整固定元素的垂直定位

来自分类Dev

在画布中调整图像大小

来自分类Dev

在 HTML 中调整 SVG 大小而不调整画布大小

来自分类Dev

如何在移动视图中调整固定背景图像的大小?

Related 相关文章

  1. 1

    如何在画布上重新绘制以调整大小而不会模糊?

  2. 2

    如何调整伪元素中图像的大小?

  3. 3

    基于容器元素在AngularJS指令中自动调整SVG的大小

  4. 4

    如何在bootstrap.css中调整容器大小

  5. 5

    CSS Flexbox:如何在保持宽高比的同时调整固定大小的图像的大小

  6. 6

    如何在AnyLogic中自动调整GUI元素的大小?

  7. 7

    在画布中绘制时如何调整位图的大小?

  8. 8

    调整画布元素/形状的大小

  9. 9

    如何在ggplot中控制画布大小?

  10. 10

    如何调整Java Script元素的大小以适合其容器窗口

  11. 11

    如何创建可调整大小和固定大小的容器的变体

  12. 12

    如何在SVG元素中调整文本大小

  13. 13

    如何在:: after伪元素中自动调整圆圈的大小?

  14. 14

    如何在画布上移动/调整大小/旋转ContentControl?

  15. 15

    调整flex容器大小时,如何使带有画布的div缩小?

  16. 16

    调整元素大小以适合容器

  17. 17

    如何调整画布大小

  18. 18

    CSS:如何填充包含固定大小元素的动态容器?

  19. 19

    如何在wx.notebook中调整多个画布的大小,浮点大小和重叠问题(WxPython,Matplotlib)

  20. 20

    是否可以立即调整固定在Windows 10中开始菜单上的所有图标的大小?

  21. 21

    调整画布元素的大小

  22. 22

    如何使用自动布局调整固定宽度和高度的UIImageView的大小

  23. 23

    调整Flex Spark图像大小以适合容器

  24. 24

    如何在Android的CardView中调整图像大小以适合固定大小?

  25. 25

    如何在窗口调整大小时重绘画布

  26. 26

    css调整固定元素的垂直定位

  27. 27

    在画布中调整图像大小

  28. 28

    在 HTML 中调整 SVG 大小而不调整画布大小

  29. 29

    如何在移动视图中调整固定背景图像的大小?

热门标签

归档