在 Echarts 中,折线图悬浮提示(即 tooltip)的样式可以通过 `tooltip` 配置项进行设计。下面结合给定示例详细说明相关设计方法:
### 1. 基础配置
在 `option` 对象里,`tooltip` 配置项用于控制悬浮提示的基本行为和样式。示例中的基础配置如下:
```javascript
option = {
// ...其他配置...
tooltip: {
trigger: 'axis'
},
// ...其他配置...
};
```
这里 `trigger: 'axis'` 表示当鼠标悬浮在坐标轴上时触发悬浮提示,会同时显示该坐标轴对应所有系列的数据信息。
### 2. 自定义悬浮提示内容格式
可以通过 `formatter` 函数自定义悬浮提示框内显示的内容。例如,若要显示更详细的信息,可做如下修改:
```javascript
option = {
// ...其他配置...
tooltip: {
trigger: 'axis',
formatter: function (params) {
let result = params[0].axisValue + '<br/>';
for (let i = 0; i < params.length; i++) {
result += params[i].seriesName + ': ' + params[i].value + '<br/>';
}
return result;
}
},
// ...其他配置...
};
```
上述代码中,`formatter` 函数接收 `params` 参数,该参数包含了当前悬浮位置的相关数据信息。通过遍历 `params`,可以将每个系列的名称和对应值组合成自定义的显示内容。
### 3. 样式设置
悬浮提示框的样式可通过 `tooltip` 配置项里的 `backgroundColor`、`borderColor`、`borderWidth`、`textStyle` 等属性进行设置。示例如下:
```javascript
option = {
// ...其他配置...
tooltip: {
trigger: 'axis',
backgroundColor: 'rgba(0, 0, 0, 0.7)', // 背景颜色
borderColor: '#333', // 边框颜色
borderWidth: 1, // 边框宽度
textStyle: {
color: '#fff' // 文字颜色
},
formatter: function (params) {
let result = params[0].axisValue + '<br/>';
for (let i = 0; i < params.length; i++) {
result += params[i].seriesName + ': ' + params[i].value + '<br/>';
}
return result;
}
},
// ...其他配置...
};
```
上述代码中,设置了悬浮提示框的背景颜色为半透明黑色,边框颜色为灰色,边框宽度为 1 像素,文字颜色为白色。
### 完整示例代码
结合上述配置,完整的示例代码如下:
```javascript
option = {
title: {
text: 'Stacked Line'
},
tooltip: {
trigger: 'axis',
backgroundColor: 'rgba(0, 0, 0, 0.7)',
borderColor: '#333',
borderWidth: 1,
textStyle: {
color: '#fff'
},
formatter: function (params) {
let result = params[0].axisValue + '<br/>';
for (let i = 0; i < params.length; i++) {
result += params[i].seriesName + ': ' + params[i].value + '<br/>';
}
return result;
}
},
legend: {
data: ['Email', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
toolbox: {
feature: {
saveAsImage: {}
}
},
xAxis: {
type: 'category',
boundaryGap: false,
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
yAxis: {
type: 'value'
},
series: [
{
name: 'Email',
type: 'line',
stack: 'Total',
data: [120, 132, 101, 134, 90, 230, 210]
},
{
name: 'Union Ads',
type: 'line',
stack: 'Total',
data: [220, 182, 191, 234, 290, 330, 310]
},
{
name: 'Video Ads',
type: 'line',
stack: 'Total',
data: [150, 232, 201, 154, 190, 330, 410]
},
{
name: 'Direct',
type: 'line',
stack: 'Total',
data: [320, 332, 301, 334, 390, 330, 320]
},
{
name: 'Search Engine',
type: 'line',
stack: 'Total',
data: [820, 932, 901, 934, 1290, 1330, 1320]
}
]
};
```
### 相关问题