javascript - 为什么我的画布在将 html 转换为 DOM 调用时会自行缩放?
问题描述
在重构我的代码以避免调用该innerHtml
成员时,出现了一个新错误。我只将 html 字符串转换为 DOM 调用。铬检查器中没有错误。我正在使用 mercurial,旧版本仍然有效。我四处打猎,然后:
alert(ctx.getTransform());
返回1,0,0,1,0,0
哪个是恒等变换。但我的画布仍然缩放错误。除了基本的线条和笔画成员之外,我什么都不称呼。
function buildColorTool() {
var pick = document.createElement("DIV");
var canvas = document.createElement("canvas");
canvas.style.width = "200px";
canvas.style.height = "200px";
canvas.id = "wheelCanvas";
pick.appendChild(canvas);
document.getElementById("toolWindow").appendChild(pick);
}
坏了,但是:
function buildColorTool() {
let toolWindow = "<div class=\"toolDialogue\">";
toolWindow += " <div id=\"colorPicker\">";
toolWindow += " <canvas id=\"wheelCanvas\" width=\"200\" height=\"200\"></canvas>";
toolWindow += " </div>";
toolWindow += " </div>";
document.getElementById("toolWindow").innerHTML = toolWindow;
}
作品。我用过hg diff -c 25 ./script.js > changes.txt
,是否有一组更好的可变参数用于发布到堆栈交换?
解决方案
问题是,您是通过样式标签设置元素的宽度和高度。然而,这会导致画布元素出现问题。通常height和width属性用于实际尺寸,CSS宽度/高度用于缩放。
解决方案 变更
function newColorCanvas() {
var pick = document.createElement("DIV");
var canvas = document.createElement("canvas");
canvas.style.width = "200px";
canvas.style.height = "200px";
canvas.id = "wheelCanvas";
canvas.innerText = "Canvas tag not supported";
pick.appendChild(canvas);
var select = document.createElement("P");
select.id = "colorSelection";
select.innerText = "HSL: 135, 75, 50";
pick.appendChild(select);
document.getElementById("toolWindow").appendChild(pick);
paintCanvas(135,75,50);
canvas.addEventListener('click', function() {updateCanvas();});
}
至
function newColorCanvas() {
var pick = document.createElement("DIV");
var canvas = document.createElement("canvas");
canvas.width = 200;
canvas.height = 200;
canvas.id = "wheelCanvas";
canvas.innerText = "Canvas tag not supported";
pick.appendChild(canvas);
var select = document.createElement("P");
select.id = "colorSelection";
select.innerText = "HSL: 135, 75, 50";
pick.appendChild(select);
document.getElementById("toolWindow").appendChild(pick);
paintCanvas(135,75,50);
canvas.addEventListener('click', function() {updateCanvas();});
}
推荐阅读
- angularjs - 捕获 AngularJS / Angular-ui-routing HTTP 错误以便采取行动
- android - 更改 Kotlin .class 输出目录
- kubernetes - Istio 未向 Jaeger 报告 https 跟踪
- javascript - 为同一个对象属性多次解构
- r - 基于 R 中独立性卡方检验结果的残差分析
- c# - 带有 JSON 有效负载正文的 HTTP 帖子,其中包含使用 cURL 的空行
- python - 从数字数组创建布尔数组
- git - 带有点斜线工作树的三点对称表示法的 Git diff
- html - 制作 div 蒙版背景图像以匹配父背景图像
- sql - 如何从 SQLite3 中的多个表中查询图像