使用 JavaScript 计算字符串的宽度并不直接简单,尤其是在使用非等宽字体时。在这里,我们探索使用 HTML 5 中的 Canvas.measureText 方法的解决方案。
要使用 Canvas.measureText,我们创建一个画布上下文并分配它所需的字体样式。然后,我们使用measureText方法来测量指定文本的宽度。
function getTextWidth(text, font) { const canvas = getTextWidth.canvas || (getTextWidth.canvas = document.createElement("canvas")); const context = canvas.getContext("2d"); context.font = font; const metrics = context.measureText(text); return metrics.width; }
例如,计算“hello There!”的宽度。在“bold 12pt arial”字体中,我们可以这样做:
console.log(getTextWidth("hello there!", "bold 12pt arial")); // close to 86
如果我们想使用特定元素的字体大小,我们可以使用 getCanvasFont实用函数:
const fontSize = getTextWidth(text, getCanvasFont(myEl));
与基于 DOM 的方法相比,Canvas 方法有几个优点:
jsperf 基准测试表明 Canvas 方法和基于 DOM 的缓存方法具有相似的性能,除了在 Firefox 中,Canvas 方法的速度明显更快。
以上是如何使用 Canvas 方法计算 JavaScript 中的文本宽度?的详细内容。更多信息请关注PHP中文网其他相关文章!