javascript - 获取错误的 Canvas 高度

标签 javascript css html canvas

我得到错误的 Canvas 高度。这里有什么问题吗? 我做了一个 fiddle :http://jsfiddle.net/hbcz6/

HTML:

<div id="app">
    <div id="percent" class="animated"></div>
    <canvas></canvas>
</div>

Javascript:

var canvas = document.getElementsByTagName("canvas")[0];

var context = canvas.getContext('2d');
var x = canvas.width / 2;
console.log("canvas X: ", x);
var y = canvas.height / 2;
console.log("canvas y: ", y);

请查看您的控制台。

最佳答案

由于您没有设置 Canvas 元素的大小,因此其位图将默认为 300 x 150 像素。如果您使用 CSS 规则,则 元素 将被拉伸(stretch),但位图将保持相同大小,只是缩放以适合元素的大小(就像图像一样)。

以下是如何在父元素中动态调整 Canvas 元素并正确设置其大小:

首先,从 CSS 规则中移除宽度和高度:

#app canvas {
    border:2px solid red;
    }

然后使用 getComputedStyle 获取父元素的像素尺寸:

var cs = getComputedStyle(app),
    width = parseInt(cs.getPropertyValue('width'), 10);
    height = parseInt(cs.getPropertyValue('height'), 10);

parseInt 将删除末尾的 px - 现在只需将它们用于 canvas 元素:

canvas.width = width;
canvas.height = height;

Working fiddle here

关于javascript - 获取错误的 Canvas 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22198079/

相关文章:

javascript - 将 Mongoose 返回的数组转换为常规 JSON

javascript - 是否有 onclick 结束事件?

PHP 表 : I'm trying to create new row for every mysql table rows in my website

html - 新问题 Chrome opacity 0 不可点击

javascript - 为什么我不能在对象 HTMLImageElement 上使用 .hasClass(value) 方法?

javascript - 如何在导出默认值中传递值

html - 在 Materialise CSS 中列出在一行上对齐的标签

javascript - HTML 中的行内 block 元素

css - 我有自定义 CSS 来禁用我的 Qualtrics 调查中的单选按钮。但是我希望它们显示在一个特定页面上吗?

javascript - HTML 货币输入字段