使用 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中文網其他相關文章!