Chart.js 鼠标悬停时怎么自定义 tooltip 样式?
我用 Chart.js 画了个折线图,但默认的 tooltip 太丑了,想改一下背景色和字体大小,试了文档里的 options.plugins.tooltip 回调,但样式根本没变,是不是哪里写错了?
我的配置大概是这样:
const config = {
type: 'line',
data: data,
options: {
plugins: {
tooltip: {
backgroundColor: '#ff6b6b',
titleFont: { size: 18 },
bodyFont: { size: 14 }
}
}
}
};
可 tooltip 还是原来的样子,完全没生效,是不是属性名写错了?还是版本问题?
如果你用的是 v3 或 v4,那
plugins.tooltip里的配置项确实要这么写,但有个坑:Chart.js 默认的 tooltip 样式是通过 CSS 控制的,光改配置里的字体、背景色不一定能立刻生效,特别是当页面里有全局样式覆盖的时候。一般这样处理:
先确认你用的是 Chart.js v3+,然后在配置里加上
external回调来完全接管 tooltip 渲染,或者更简单的——直接加个全局 CSS 覆盖默认样式:如果你坚持用配置方式改(推荐),确保这样写(v3+ 写法):
注意
titleFont和bodyFont的值要写成对象,别写成字符串(比如'18px'就错了)。如果还是没生效,检查下浏览器开发者工具里 tooltip 元素的 class 是不是
chartjs-tooltip,有没有被其他 CSS 覆盖,或者你是不是用的 CDN 版本没更新到最新(老版本 v2 的写法是tooltips而不是plugins.tooltip)。v2 和 v3 写法差异很大,如果你不确定版本,可以看下 package.json 或 CDN 链接里是不是
3.x或4.x,别用着老文档配新版本。