悬浮框tooltip,默认是鼠标移入出现,移出消失。这种情况下,是无法点击到的,更别说添加点击事件,
从官网配置项可以看到 悬浮框的蹴触发条件有四个,根据现在的要修 修改为 click
1. 查看配置项
2.然后要给悬浮框添加事件,鼠标必须得进入悬浮框(默认为不能进去) enterable
3.添加具体方法
tooltip: {triggerOn: 'click', //触发方式trigger:'axis',// alwaysShowContent:true, //鼠标离开区域不消失formatter:function(params){let val = params[0].valuevar html = `<divstyle="pointer-events: all;" >名称:${val}<button onclick="clicks('${val}')">点击</button></div>`;return html;}},
4. 最终效果
5. 完整echarts代码- 原生中使用
<!DOCTYPE html>
<html style="height: 100%">
<head>
<meta charset="utf-8">
</head>
<body style="height: 100%; margin: 0">
<div id="container" style="height: 100%"></div>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@5/dist/echarts.min.js"></script>
<script type="text/javascript">
var dom = document.getElementById("container");
var myChart = echarts.init(dom);
var app = {};
var option;
var dataAxis = ['点', '击', '柱', '子', '或', '者', '两', '指', '在', '触', '屏', '上', '滑', '动', '能', '够', '自', '动', '缩', '放'];
var data = [220, 182, 191, 234, 290, 330, 310, 123, 442, 321, 90, 149, 210, 122, 133, 334, 198, 123, 125, 220];
var yMax = 500;
var dataShadow = [];
for (var i = 0; i < data.length; i++) {
dataShadow.push(yMax);
}
// window.clicks = function (val){
// console.log(val)
// }
// 下面这种方式也可以
function clicks(val){
alert(val)
}
window.clicks=clicks;
option = {
title: {
text: '特性示例:渐变色 阴影 点击缩放',
subtext: 'Feature Sample: Gradient Color, Shadow, Click Zoom'
},
tooltip: {
triggerOn: 'click', //触发方式
trigger:'axis',
alwaysShowContent:true, //鼠标离开区域不消失
formatter:function(params){
let val = params[0].value
var html = `<div
style="pointer-events: all;" >名称:${val}
<button onclick="clicks('${val}')">点击</button>
</div>`;
return html;
}
},
xAxis: {
data: dataAxis,
axisLabel: {
inside: true,
textStyle: {
color: '#fff'
}
},
axisTick: {
show: false
},
axisLine: {
show: false
},
z: 10
},
yAxis: {
axisLine: {
show: false
},
axisTick: {
show: false
},
axisLabel: {
textStyle: {
color: '#999'
}
}
},
dataZoom: [
{
type: 'inside'
}
],
series: [
{
type: 'bar',
showBackground: true,
itemStyle: {
color: new echarts.graphic.LinearGradient(
0, 0, 0, 1,
[
{offset: 0, color: '#83bff6'},
{offset: 0.5, color: '#188df0'},
{offset: 1, color: '#188df0'}
]
)
},
emphasis: {
itemStyle: {
color: new echarts.graphic.LinearGradient(
0, 0, 0, 1,
[
{offset: 0, color: '#2378f7'},
{offset: 0.7, color: '#2378f7'},
{offset: 1, color: '#83bff6'}
]
)
}
},
data: data
}
]
};
if (option && typeof option === 'object') {
myChart.setOption(option);
}
</script>
</body>
</html>
6 在Vue中使用
<template>
<div class="echarts">
<h2 style="text-align: center;">echarts中给tooltips添加点击事件</h2>
<div id="main"></div>
</div>
</template>
<script>
import * as echarts from 'echarts';
export default {
created() {
window.clicks = this.myClick;// 把点击事件绑到window上
},
mounted() {
const chartDom = document.getElementById('main');
const myChart = echarts.init(chartDom);
const option = {
// tooltip中绑定的点击事件
tooltip: {
axisPointer: {
type: 'cross',
crossStyle: {
color: '#999'
}
},
trigger: 'axis',
triggerOn: 'click', //触发方式 移入或点击
enterable: true, // 鼠标可移入tooltip中 必须
formatter: (params) => {
let val = params[0].value
var html = `<div
style="pointer-events: all;" >名称:${val}
<button onclick="clicks('${val}')">点击</button>
</div>`;
return html;
}
},
xAxis: {
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
yAxis: {
type: 'value'
},
series: [{
data: [120, 200, 150, 80, 70, 110, 130],
type: 'bar'
}]
};
option && myChart.setOption(option);
},
methods: {
myClick(name) { // 事件具体操作
alert(name);
}
}
};
</script>
<style lang='less'>
.echarts {
#main {
height: 500px;
width: 500px;
border: 1px solid red;
margin: 30px auto;
}
}
</style>
7. vue中效果图


