有没有资深前端开发工程师解答一下,为什么echarts的图例,lengend在scroll滚动模式下,下一页的第一个,会是上一页的最后一个,这个算是官网bug吗?该怎么处理?
这个问题并不是官方网站的bug,而是echarts本身的设计策略。
当图例(legend)使用滚动模式时,下一页的第一项是上一页的最后一项,是为了保持图例的整体视觉一致性。这样做的目的是为了使用户在点击下一页时,能够在视觉上感知到图例的整体移动,而不会感到突兀。
如果你希望修改这个默认行为,可以通过修改echarts源码来实现。具体步骤如下:
下载echarts的源码,并解压缩。
打开 src/component/legend/LegendView.js
文件。
在 LegendView.prototype._paginate
方法中找到以下代码:
javascript zrUtil.each(this._contentGroup.children(), function (contentItem) { legendUtil.fadeOut(contentItem); });
将其修改为:
javascript var contentItems = []; zrUtil.each(this._contentGroup.children(), function (contentItem) { contentItems.push(contentItem); legendUtil.fadeOut(contentItem); });
javascript for (var i = startPage * lastLineIdx; i < midLineIdx; i++) { zrUtil.each(packList[i], function (el) { el.fadeOut(); contentHeight -= el.textContentHeight; }); }
将其修改为:
javascript for (var i = startPage * lastLineIdx; i < midLineIdx; i++) { zrUtil.each(packList[i], function (el) { if (contentItems.indexOf(el) < 0) { el.fadeOut(); contentHeight -= el.textContentHeight; } }); }
保存并重新编译echarts源码。
使用修改后的echarts库来替换原有的库。
请注意,修改源码可能会导致兼容性问题,并且在升级echarts时可能需要重新进行修改。因此,请在谨慎考虑后再进行修改。
研究了一下,echarts就是这么设计的
可能是为了避免这种情况出现,最后一条有可能无法显示完全