像上图中这样圆环图并不在div的中间时,中心的文本需要居中展示 一开始用left百分比但数据一旦变长或变短就会偏移 像这样
实在是太不美观了 所以我们这里使用动态的left通过文本的长度来计算
/*** 计算文本宽度* @param {String|Number} text* @param {String} font* @returns {Number} width* @example getTextWidth("你好", '24px Arial')*/
export const getTextWidth = (text, font) => {var canvas = document.createElement('canvas')var context = canvas.getContext('2d')context.font = fontvar metrics = context.measureText(text)return metrics.width
}
上面代码可以计算出文本的宽度 然后圆环图距离左边的位置一般是固定的 我这里得出圆环图中心点距离容器左边框是114px 如图所示
所以最终我们可以通过计算得出
left: 114 - getTextWidth(9999, '24px Arial') / 2,
999就是你要渲染的值哈 这样就居中拉