您的位置:

Echarts自定义Tooltip样式详解

一、了解Echarts Tooltip

Echarts是一款基于JavaScript的可视化库,提供了丰富的数据可视化图形,而Tooltip(提示框组件)则是其中的一个重要组件。它可以显示鼠标悬浮在图形元素上时的信息,包括数据值、系列名称等。同时,Echarts还提供了丰富的自定义能力,可以对Tooltip的样式进行自定义,下面详细介绍。

二、基本的Tooltip样式

Echarts默认的Tooltip样式是简洁明了的,它的各个部分包括标题、系列名、数据项值等都是基于默认的样式格式显示的。如果我们想更改默认的Tooltip样式,可以设置Tooltip的属性“formatter”,通过一个回调函数去自定义Tooltip内容。
下面就是一段例子,通过formatter函数去自定义Tooltip样式,设置标题和数据系列名的字体颜色为红色,并将数据项值放在一行进行显示。

tooltip: {
    formatter: function(params) {
        var result = '';
        result += params[0].name + '
'; result += '' + params[0].seriesName + ': '; result += params[0].value; return result; } }

三、自定义Tooltip背景样式

我们可以按需对Tooltip的背景样式进行自定义,包括背景颜色、边框样式、边框宽度等属性。下面是一个示例代码片段,将Tooltip的背景色设置为#fff,边框颜色设置为#ccc,边框宽度设置为1px。

tooltip: {
    backgroundColor: '#fff',
    borderColor: '#ccc',
    borderWidth: 1
}

四、自定义Tooltip文字样式

除了背景样式外,我们还可以对Tooltip的文字样式进行自定义。下面是一个例子,将Tooltip中文字的字体设置为14px的宋体,字体颜色为#f00,这里使用了HTML实体化替换空格和回车,以免在文章中解析出错。

tooltip: {
    textStyle: {
        fontSize: 14,
        fontFamily: '宋体',
        color: '#f00'
    },
    formatter: function(params) {
        var result = '';
        result += params[0].name + '<br>';
        result += '<span style="color:red">' + params[0].seriesName + '</span>: ';
        result += params[0].value;
        return result;
    }
}

五、自定义Tooltip图标

默认情况下,Tooltip的图标是一个小圆圈,而我们可以通过设置Tooltip的属性“trigger”自定义Tooltip的图标样式,下面为一个自定义样式的代码片段,将Tooltip图标设置为一个提示信息的图标。

tooltip: {
    trigger: 'item',
    formatter: function(params) {
        var result = params.name + '
'; result += params.seriesName + ': ' + params.value; return result; }, axisPointer: { type: 'none' }, backgroundColor: 'rgba(255,255,255,0.9)', textStyle: { fontSize: 14 }, extraCssText: 'background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAYAAADEUlfTAAAAq0lEQVQY053PsQ0AQBRF4RfFkpjB0sJWOInpYfgY2UCnYAqqQBGpqAFxr+mNceqNarnLyj0LARAWbNH5gjvnTZt7Tc6JL2OTxxdeu/8JdpGQKO+2I0Fw2RnLAQoNWpEcpk6HDOSzQaBo64m6zxsOxBcdhzd+5HUfugf/YszY1KoRVWgAAAABJRU5ErkJggg==); background-size:contain; background-repeat:no-repeat; background-position: 5px 0px; padding-left:25px;' }

六、自定义Tooltip模板

最后,我们还可以完全自定义Tooltip的模板,包括样式、结构等。下面为一个例子,通过自定义模板,实现了Tooltip中标题、信息和图例的显示,由于模板的长度较长,建议在实际开发中将相关代码单独放在一个js文件中引用。

// 准备好模板
var tooltipTemplate = '<div class="my-tooltip">'
        + '<div class="my-tooltip-title">{title}</div>'
        + '<div class="my-tooltip-content">'
        + '<div class="my-tooltip-icon"></div>'
        + '<table class="my-tooltip-table">'
        + '<tr><td class="my-tooltip-name">{name}</td>'
        + '<td class="my-tooltip-value">{value}</td></tr>'
        + '</table></div>'
        + '<div class="my-tooltip-legend">{legend}</div>'
        + '</div>';

// 自定义的Tooltip样式
var customTooltip = {
    trigger: 'axis',
    confine: true,
    position: function(point, params, dom, rect, size) {
        var x = point[0]; // x坐标位置
        var y = point[1]; // y坐标位置

        var boxWidth = size.contentSize[0];
        var boxHeight = size.contentSize[1];
        var posX = 0; // x坐标位置
        var posY = 0; // y坐标位置

        if (x < boxWidth) {
            posX = 5; // tooltip 在鼠标左边显示
        } else {
            posX = x - boxWidth; // tooltip 在鼠标右边显示
        }
        if (y < boxHeight) {
            posY = 5; // tooltip 在鼠标上方显示
        } else {
            posY = y - boxHeight; // tooltip 在鼠标下方显示
        }

        return [posX, posY];
    },
    formatter: function(params, ticket, callback) {
        var tpl = tooltipTemplate;
        tpl = tpl.replace('{title}',params[0].name);
        tpl = tpl.replace('{name}',params[0].seriesName);
        tpl = tpl.replace('{value}',params[0].value);
        tpl = tpl.replace('{legend}',params[0].seriesName);
        return tpl;
    },
    extraCssText: 'border-radius:5px;background:rgba(0,0,0,0.7);'
};

七、总结

Echarts的Tooltip是非常重要的可视化组件之一,可以帮助我们更直观地展现数据信息。通过对Tooltip样式的定制,可以更好的满足项目的需求,提升图表的美观度和信息可读性。以上介绍了几种常见的Tooltip样式定制方法,相信对您有所帮助。