vue項目中畫出優雅的線條

需求:運行監控圖模塊,模塊之間用虛線或者實線連接,且帶有箭頭

實現方法:

1、canvas繪製

2、echarts專業的表格軟件(畫帶箭頭的虛線有難度)

3、svg方法

4、leader-line插件

5、背景圖

  •    剛開始項目比較緊急,也沒時間研究怎麼劃線比較好,就用了最笨的方法:背景圖。就是讓ui出一張背景圖,只留下線條和背景色,其它元素的位置通過配置數據來動態渲染

      難點:屏幕縮放時保證相對位置精確,這就需要以一個屏幕的寬高爲基準進行比例計算,把其它元素的left和top值轉化爲百分比,並調節數值,使元素和背景圖上線條的位置達到需要的效果

文檔相當詳細,支持虛線、線條粗細、箭頭、線性等的配置,就是不支持90度折線的圓角設置,於是在項目中使用了leader-line來劃線

我的做法是在頁面mounted時根據配置好的數據渲染線條,然後將線條對象存到store裏,beforeDestroy時調用hide()方法隱藏,下次進入頁面時就只需要調用show()方法顯示就行,避免過多的渲染。當然也可以離開頁面前調用remove()方法移除線條對象,下次進來再重新渲染,都是可以的。

注意點:渲染線條實例時需要獲取dom結構,所以要等頁面渲染完成後再調用繪製函數,最好在nextTick後再加個500ms的延時,確保需要的dom結構完全渲染完成,我之前沒加就導致繪製了卻無法顯示的問題。

  • canvas劃線沒試過,肯定是可以的
  • svg劃線,其它項目已經用的svg畫線,正在研究當中,研究好了更新

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章