来聊聊Echarts的基于X轴缩放和基于Y轴缩放,以及切换之后状态保持的问题

Echarts支持基于轴线缩放的,在slider模式中应用的很成熟,但体验和样式并不能得到来自设计和产品的认可,他们想要的样式和功能是长这样的

那就需要大量自定义的功能,首先你的在toolbox.feature里自定义x轴y轴以及还原功能icon

这些图标可以自行去iconfont上面找,我是直接下载为png格式,存到项目的文件夹中,再引入到组件中的方式

markdown 复制代码
toolbox: {

  feature: {

    myXAxisX: {

       show: true,

       title: '',

       icon: computed(() => {

          return 'image://' + xIcon_default;

       }),

       onclick: function (val) {

           console.log('点击x轴缩放');

      });

    },

 },

其中xIcon_default的引入 import xIcon_default from '@/assets/images/zuoyoujiantou.png'; 同理,y轴和还原icon也参照这样的设置方式 这里还需要设置dataZoom,既然是只允许某一个轴线的缩放,比如是基于x轴缩放,而y轴不允许缩放

markdown 复制代码
dataZoom: [

    {

    type: 'inside',

    xAxisIndex: 0,

    filterMode: 'none',

    start: 0,

    end: 100,

    },

    {

    type: 'inside',

    yAxisIndex: 'none',

    filterMode: 'none',

    start: 0,

    end: 100,

    },

],

缩放的状态你需要去记录下来

csharp 复制代码
myChart.on('dataZoom', function (params) {

    const { batch } = params;

    console.log(batch)

});

获取的batch对应start和end存到dataZoom对应的轴线的start和end中 x轴是dataZoom[0] y 轴是dataZoom[1], 到了这一步如果不切换的情况下,x轴的缩放是没问题的了,那么切换到y轴呢 要把dataZoom[0].xAxisIndex改为none dataZoom[1].yAxisIndex改为0 这样就可以实现y轴的缩放了,但会有一个问题,就是x轴缩放的状态,在切换到y轴时并不能保持,就需要手动去设置,把x轴缩放的状态batch值的start和end赋值给xAxis.max和xAxis.min 这样就可以实现切换轴线缩放,状态的无缝衔接了

相关推荐
爱看书的小沐10 分钟前
【小沐学WebGIS】基于Three.JS绘制飞行轨迹Flight Tracker(Three.JS/ vue / react / WebGL)
javascript·vue·webgl·three.js·航班·航迹·飞行轨迹
井柏然40 分钟前
前端工程化—实战npm包深入理解 external 及实例唯一性
前端·javascript·前端工程化
IT_陈寒1 小时前
Redis 高性能缓存设计:7个核心优化策略让你的QPS提升300%
前端·人工智能·后端
aklry1 小时前
elpis之动态组件机制
javascript·vue.js·架构
井柏然2 小时前
从 npm 包实战深入理解 external 及实例唯一性
前端·javascript·前端工程化
羊锦磊2 小时前
[ vue 前端框架 ] 基本用法和vue.cli脚手架搭建
前端·vue.js·前端框架
brzhang2 小时前
高通把Arduino买了,你的“小破板”要变“AI核弹”了?
前端·后端·架构
她说..2 小时前
通过git拉取前端项目
java·前端·git·vscode·拉取代码
智能化咨询2 小时前
玩转ClaudeCode:通过Chrome DevTools MCP实现高级调试与反反爬策略
前端·chrome·chrome devtools
xjf77113 小时前
Nx项目中使用Vitest对原生JS组件进行单元测试
javascript·单元测试·前端框架·nx·vitest·前端测试