业务需求
需要开发一个动态tab用来切换Echarts图表的显示,tab项指定显示图表的展示数据。
实现思路
通过多个DIV标签承载Echarts图表。起初的思路是将多个DIV标签设置样式display:none:
进行隐藏,在每次进行tab切换时,先改变DIV标签的样式让其显示,然后进行数据请求并绘制图表。
出现问题
本该按照百分比显示的Echarts图表只显示了很小的宽和高,当我打开控制台或者对页面布局大小进行控制,就会突然转换为百分比显示。
解决思路
因为动态的去让DOM元素取消与显示,可能会影响DOM的加载、图标的绘制。
所以想了两个办法,要么不操作DOM,要么不按百分比显示(利用媒体查询)。
媒体查询的方案期初在两个常见分辨率可以较好的显示,但这样的响应式存在较大的局限,也会影响用户体验,于是考虑不操作DOM。
让Echarts图表项隐藏的办法可以用透明度opacity来控制,这样就避开了DOM操作,此时将DIV标签绝对定位到父级标签。
新的问题
然后在切换时出现了新的问题,Echarts上的tooltip提示框没有显示,只显示了HTML中最后一个DIV的tooltip。
问题定位失败
对这个细节的思考,我竟然定位到了图表本身,既然有的图标能显示,显然不是图标的问题。我想到了透明度opacity属性是将其以及子代所有元素透明,是不是tooltip被透明了,我又错误的想使用background:rgba()
方式进行透明度变更。以为只透明本身元素即可。试了以后才发现并不是这个影响。既然有一个Echarts的图表可以显示tooltip,就证明无关透明度本身了,而我连续两次问题定位失误。
问题解决
经过思考以后,我尝试改变D