首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >HTML5画布:为什么用measureText和offsetWidth()测量文本会给出不同的值?

HTML5画布:为什么用measureText和offsetWidth()测量文本会给出不同的值?
EN

Stack Overflow用户
提问于 2013-09-10 16:11:31
回答 4查看 17.5K关注 0票数 6

我对offsetWidth()和measureText进行了基准测试,得到了截然不同的值。它们不应该是一样的吗?为什么它们是不同的?

下面是jsfiddle和原始代码:http://jsfiddle.net/WhGk7/2/

代码语言:javascript
复制
<canvas id="myCanvas" width="300" height="200" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.</canvas>
<span id="visibilityHack" style="visibility: hidden; font: 15px Arial;">textAlign=start</span>
<div id="results"></div>

<script>
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");

// Create a red line in position 150
ctx.strokeStyle="red";
ctx.moveTo(150,20);
ctx.lineTo(150,170);
ctx.stroke();
var measureTextWidth = ctx.measureText("textAlign=start").width;
var measureTextNode =  document.createTextNode("measureTextWidth: " + measureTextWidth);
document.getElementById("results").appendChild(measureTextNode);

var swidth = document.getElementById("visibilityHack").offsetWidth;
var textnode = document.createTextNode("     offsetWidth: " + swidth);
document.getElementById("results").appendChild(textnode);


ctx.font="15px Arial";    

// Show the different textAlign values
ctx.textAlign="start";      
ctx.fillText("textAlign=start",117,60);        
ctx.textAlign="center";     
ctx.fillText("textAlign=start",150,120);
</script>
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18713716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档