html - 将 CSS Resize 属性添加到 Canvas 元素

标签 html css canvas

CSS 调整大小属性可以应用于 Canvas 元素吗?使用 MDN document作为引用,aribrary 元素示例似乎不适用于 Canvas 作为元素。

HTML

<canvas width=300 height=300></canvas>

CSS

canvas {
  resize: both;
  overflow: hidden;
  border: 1px solid black;
}

我创建了一个 jsfiddle 来处理我遇到的其他一些问题: https://jsfiddle.net/m540fevj/1/

在 Chrome 中,第一个 canvas 元素显示了应用到它的调整大小属性,但并不正确,因为它实际上不能调整大小。第二个元素显示了一个像素的差异,元素的可调整大小消失了。第三个元素表明,如果不对其进行绘制,它似乎也不会应用该属性。 div 元素显示了我最终希望 canvas 元素看起来像什么。在 Firefox 中,只有 div 是可调整大小的。

问题是由于 canvas 元素处理 CSS 宽度和高度的方式的独特性吗?

最佳答案

不,CSS resize 不适用于行内元素。 <canvas> , 就像 <img>是一个内联元素。因此,您不能在 Canvas 上使用此属性。 <子> See MDN Note

请注意,您可以将 Canvas 包裹在一个可调整大小的 block 容器中,并使 Canvas 以 100% 显示,但请记住这只是为了显示。这将拉伸(stretch) Canvas 图像的实际像素内容。

const ctx = canvas.getContext('2d');
ctx.arc(25,25,25,0,Math.PI*2);
ctx.fill();
.resize-me {
  display: inline-block;
  border: 1px solid;
  resize: both;
  width: 50px;
  height: 50px;
  overflow: hidden;
}
canvas {
  width: 100%;
  height: 100%;
  pointer-events: none; /* Chrome needs this oO */
}
<div class="resize-me">
  <canvas id="canvas" width="50" height="50"></canvas>
</div>

关于html - 将 CSS Resize 属性添加到 Canvas 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40560568/

相关文章:

html - 通过移动设备打开网站时将字符串移动到新段落

html - 低分辨率 Canvas 上的页脚重叠内容

jquery - 条形图插件 - 使每个条形图都可点击(每个条形图都有不同的链接)

Jquery 在页面加载后立即启动

php - 由操作系统引起的潜在网站错误?

css - 流畅的 CSS 布局,背景上有一个居中的大 div

CSS 相对缩放?

javascript - 如何在 Windows 上安装 Node js Canvas

javascript - drawImage 在 Canvas 上绘制图像,但在任何事件之后它都会消失图像 fabricjs

javascript - Offscreencanvas 非法构造函数