Canvas measureText方法详解,掌握文本宽度测量、文本换行、文本定位等实用技巧。measureText方法返回文本的测量信息,主要用于获取文本宽度。
const metrics = ctx.measureText(text)
const metrics = ctx.measureText('Hello')
console.log(metrics.width) // 文本宽度
console.log(metrics.actualBoundingBoxLeft) // 左边界
console.log(metrics.actualBoundingBoxRight) // 右边界
console.log(metrics.actualBoundingBoxAscent) // 上边界
console.log(metrics.actualBoundingBoxDescent) // 下边界
ctx.font = '20px Arial'
const text = 'Hello Canvas'
const metrics = ctx.measureText(text)
const width = metrics.width
console.log('文本宽度:', width)
function centerText(ctx, text, x, y) {
const metrics = ctx.measureText(text)
const textWidth = metrics.width
ctx.fillText(text, x - textWidth / 2, y)
}
function wrapText(ctx, text, x, y, maxWidth, lineHeight) {
const words = text.split('')
let line = ''
let currentY = y
for (let i = 0; i < words.length; i++) {
const testLine = line + words[i]
const metrics = ctx.measureText(testLine)
if (metrics.width > maxWidth && i > 0) {
ctx.fillText(line, x, currentY)
line = words[i]
currentY += lineHeight
} else {
line = testLine
}
}
ctx.fillText(line, x, currentY)
}
先设置字体
必须在调用measureText之前设置font属性。
返回值单位
width属性返回的是CSS像素值。
浏览器兼容
actualBoundingBox等属性在较新浏览器中才支持。