Echarts圆环图偏移后 中心文字居中对齐实现

像上图中这样圆环图并不在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 = font
  var metrics = context.measureText(text)
  return metrics.width
}

上面代码可以计算出文本的宽度 然后圆环图距离左边的位置一般是固定的 我这里得出圆环图中心点距离容器左边框是114px 如图所示

所以最终我们可以通过计算得出

left: 114 - getTextWidth(9999, '24px Arial') / 2,

999就是你要渲染的值哈 这样就居中拉

### 使用 `graphic` 和 `title` 实现圆环中间文字居中 为了使 ECharts圆环中的文字能够始终居中显示,可以采用两种主要方法: #### 方法一:使用 `graphic` `graphic` 是 ECharts 提供的一个强大属性,用于在表内添加自定义形元素。对于需要精确控制位置的情况特别有用。 ```javascript option = { series: [{ type: 'pie', radius: ['50%', '70%'], avoidLabelOverlap: false, label: { show: false, position: 'center' }, emphasis: { label: { show: true, fontSize: '30', fontWeight: 'bold' } }, data:[ {value:335, name:'直接访问'}, {value:310, name:'邮件营销'} ] }], graphic: [ { type: 'text', left: 'center', top: 'middle', style: { text: '100%', textAlign: 'center', fill: '#fff', font: 'bolder 20px Microsoft YaHei' } } ] }; ``` 此代码片段展示了如何利用 `graphic` 来创建一个位于圆环中央的文字标签[^1]。 #### 方法二:使用 `title` 另一种更简单的方法是通过设置全局的 `title` 属性来放置中心文本。这种方法适用于不需要复杂定位逻辑的情形。 ```javascript option = { title: { text: '{a|100%}', // 主标题 subtext: '', // 副标题 left: 'center', // 水平居中 top: 'center', // 垂直居中 textStyle: { rich: { a: { color: '#ff0000', align: 'center', verticalAlign: 'middle', padding: [0, 0, 0, 0], fontSize: 24 } } } }, series: [{ name: '', type: 'pie', radius: ['50%', '70%'], ... }] } ``` 这段代码说明了怎样借助 `title` 组件轻松地把文字置于圆环正中央,并且可以通过 `rich` 配置进一步美化样式[^3]。 当遇到因 div 容器大小变化而导致的文本偏移问题时,建议优先考虑上述基于相对布局的方式而非绝对像素值或百分比定位[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值