小程序中运用到echarts图表,在echarts图标上进行拖动上划有时echarts图表隐藏掉?
发布于 5 年前 作者 qianxiuying 11399 次浏览 来自 问答

var option = {

color: [’#019c37’],

calculable: false,

series: [{

name: ‘今日’,

type: ‘line’,

stack: ‘总量’,

data: newData,

smooth: true,

},

{

name: ‘昨日’,

type: ‘line’,

data: oldData,

symbolSize: 0, // symbol的大小设置为0

showSymbol: false, // 不显示symbol

lineStyle: {

width: 0, // 线宽是0

color: ‘rgba(0, 0, 0, 0)’ // 线的颜色是透明的

},

},

{

name: ‘增量’,

type: ‘line’,

data: poorData,

symbolSize: 0, // symbol的大小设置为0

showSymbol: false, // 不显示symbol

lineStyle: {

width: 0, // 线宽是0

color: ‘rgba(0, 0, 0, 0)’ // 线的颜色是透明的

},

}

],

tooltip: {

trigger: ‘axis’,

position: function (point, params, dom, rect, size) {

// 鼠标坐标和提示框位置的参考坐标系是:以外层div的左上角那一点为原点,x轴向右,y轴向下

// 提示框位置

var x = 0; // x坐标位置

var y = 0; // y坐标位置

// 当前鼠标位置

var pointX = point[0];

var pointY = point[1];

// 外层div大小

// var viewWidth = size.viewSize[0];

// var viewHeight = size.viewSize[1];

// 提示框大小

var boxWidth = size.contentSize[0];

var boxHeight = size.contentSize[1];

// boxWidth > pointX 说明鼠标左边放不下提示框

if (boxWidth > pointX) {

x = 5;

} else { // 左边放的下

x = pointX - boxWidth;

}

// boxHeight > pointY 说明鼠标上边放不下提示框

if (boxHeight > pointY) {

y = 5;

} else { // 上边放得下

y = pointY - boxHeight;

}

return [x, y];

},

formatter: function (param) {

// 利用循环更改显示的内容

let list = param

let txt = list[0].name + “\n”

txt += list[0].seriesName + “:” + list[0].value + “\n” + list[1].seriesName + “:” + list[1].value + “\n” + list[2].seriesName + “:” + list[2].value + “\n”

return txt

},

},

xAxis: {

type: ‘category’,

boundaryGap: false,

axisTick: {

show: false,

},

axisLine: {

show: false,

lineStyle: {

color: ‘#fff’, // x坐标轴的轴线颜色

width: 0 //这里是坐标轴的宽度,为0就是不显示

},

},

axisLabel: {

color: ‘#676767’,

fontSize: 12

},

data: TableData,

},

yAxis: {

type: ‘value’,

min: this.data.minData,

max: this.data.maxData,

interval: (this.data.maxData - this.data.minData) / 5,

axisLabel: {

color: ‘#676767’,

fontSize: 10

},

axisTick: {

show: false

},

axisLine: {

lineStyle: {

color: ‘#FFf’,

width: 0, //这里是为了突出显示加上的

}

}

}

};

这是option配置项,希望官方大佬给个解决思路

3 回复

确实存在这个问题

这个问题困扰了我很久,今天刚刚解决。

如果是用的 mpvue-echarts ,那么设置 throttleTouch=“true” 可以解决

<mpvue-echarts v-if="isOnLoad" :echarts="echarts" :onInit="onInit" :canvasId="canvasId" throttleTouch="true" />

mpve-echarts 里这个参数的作用,是限制 mouse-move 的输入频率

touchMove(e) {
   ...
      if (throttleTouch) {
        const currMoveTime = Date.now();
        if (currMoveTime - lastMoveTime < 240return;
        this.lastMoveTime = currMoveTime;
      }
   ...
}

如果是用的别的控件,照样改造一下应该会有效果

,当手指拖拽出这个区域后,echarts图表消失掉了

回到顶部