圖表容器及大小
在快速上手中,
我們介紹了初始化ECharts的接口echarts.init。
API文檔中詳細介紹了參數的具體含義,
建議理解后再閱讀本文。
下面,
我們就常見的幾種使用場景,
介紹如何初始化一個圖表以及改變其大小。
初始化
在HTML中定義有寬度和高度的父容器(推薦)
通常來說,
需要在HTML中
先定義一個<div>節點,
並且通過CSS
使得該節點具有寬度和高度。
初始化的時候,
傳入該節點,
圖表的大小默認即為該節點的大小,
除非聲明了opts.width或
opts.height將其覆蓋。

需要注意的是,
使用這種方法在調用
echarts.init
時需保證容器已經有寬度和高度了。
指定圖表的大小
如果圖表容器不存在寬度和高度,
或者,
你希望圖表寬度和高度不等於容器大小,
也可以在初始化的時候指定大小。

響應容器大小的變化
監聽圖表容器的大小並改變圖表大小
在有些場景下,
我們希望當容器大小改變時,
圖表的大小也相應地改變。
比如,
圖表容器是一個
高度為300px、寬度為頁面100%的節點,
你希望在瀏覽器寬度改變的時候,
始終保持圖表寬度是頁面的100%。
這種情況下,
可以監聽頁面的window.onresize事件
獲取瀏覽器大小改變的事件,
然后調用echartsInstance.resize改變圖表的大小。

為圖表設置特定的大小
除了直接調用resize()不含參數的形式之外,
還可以指定寬度和高度,
實現圖表大小不等於容器大小的效果。

小貼士:
閱讀API文檔的時候
要留意接口的定義方式,
這一接口有時會被誤認為是
myCharts.resize(800, 400)
的形式,
但其實不存在這樣的調用方式。
容器節點被銷毀以及被重建時
假設頁面中存在多個標簽頁,
每個標簽頁都包含一些圖表。
當選中一個標簽頁的時候,
其他標簽頁的內容在DOM中被移除了。
這樣,
當用戶再選中這些標簽頁的時候,
就會發現圖表“不見”了。
本質上,
這是由於圖表的容器節點被移除導致的。
即使之后該節點被重新添加,
圖表所在的節點也已經不存在了。
正確的做法是,
在圖表容器被銷毀之后,
調用echartsInstance.dispose銷毀實例,
在圖表容器重新被添加后再次調用echarts.init初始化。
小貼士:
在容器節點被銷毀時,
總是應調用echartsInstance.dispose以銷毀實例釋放資源,
避免內存泄漏。
