開發經驗滿滿的前輩們,此篇文章或許對大家來說並不值得一提,這裏說的主要面向對象是小白,或者欠缺點經驗的開發者們(懂echarts的更佳)。這裏聊得是引導你們如何去思考一個問題,以我所在項目爲例子,闡述個人思考方式和思路,也許對於某些人來說,能給予一些啓發。這裏說的沒有對與錯之分,我說的也未必都是正解,純粹地一個我的總結和分享,我也是一個小小白。若有錯誤請多見諒,不喜勿噴!css
以這界面中紅框部分爲例子,用echarts實現,圖形都是比較基礎的餅圖和柱狀圖。想必你們都以爲這個很好實現吧。假設你知道echart的這兩種圖的基本配置項,你們的第一感受是否是以爲,這個so easy?canvas
假設你的老闆叫你評估個時間作出來,可能你會憑感受地脫口而出,1-2個小時吧,甚至更短?echarts
若是我在這裏加個提醒,叫你們儘量去考慮全面再去回答老闆的問題,是否,直到這裏,你跟剛剛的想法發生了較大的變化?佈局
這是分界線,在這以前,你們仍是能夠好好考慮全面一下,跟接下來,我要說的,對比一下測試
咱們知道,這裏是有兩個echart圖,能夠當作兩個div,放在一行,能夠用flex
div {
display: inline-block;
width: 50%;
}
/** or **/
div {
float: left;
width: 50%;
}
複製代碼
來實現,想必各位第一反應也是這兩個吧,反正我是的。ui
進一步去想,屏幕會變大縮小,若是縮小到很小的話,相比二者擠不下一行了,這時就要換行。那麼,可能用flex佈局,更加方便,都不用本身寫媒體查詢就能夠智能的實現了。
然而,等到你真正去寫的時候,會發現,佈局亂糟糟,達不到預期,爲什麼?
緣由在echart圖形自己的佈局上,因爲本來讓echart正常展現的功能,會存在position等佈局css樣式,咱們都知道,使用flex佈局,其子元素的一些佈局樣式會失效。 所以,這種方案不可行。 很遺憾,咱們仍是經過媒體查詢去處理這種狀況吧。編碼
接下來,在圖中看到spa
雖然說這是兩個div,可是其實並無緊挨在一塊兒的,從美觀上講,的確,須要用空白的間隔會更好看。那麼怎麼處理這個空白間隔呢? 想必你們都以爲這個有什麼好講的,搞個margin或者padding不就行了嘛,emmm...我一開始也是這麼想的,可是準備寫代碼的時候,就會以爲好麻煩(- _ - 我懶):3d
思路很清晰,實現起來也是很是簡單的。可是,我後來仍是放棄了,
第一我以爲,少點類名,代碼更漂亮;
第二,我以爲起名字好煩啊,用僞類?能夠啊,可是也要處理好可否真的定位好這個,撇去自己項目的代碼的一個總體環境,其實也是很簡單的,可是當置於一個複雜的代碼環境裏,各類命名錯綜複雜的狀況下,少用僞類仍是較爲保險;
第三,我不想計算;
第四,關鍵的關鍵是,我以爲存在更好的辦法。
更好的辦法(仍是要類名,可是項目裏我是統一了兩個類名)
/** 這兩個類名估計你們都很熟悉,可是我項目沒有引用boostrap,這是我本身定義的全局類名 **/
.pull-left {
float: left!important;
}
.pull-right {
float: right!important;
}
複製代碼
回到這個圖裏,我爲第一個div設置了pull-left類名,第二個div設置了pull-right類名。
可是他們的寬度再也不是width: 50%了,改爲更小的值,以便留出須要的空白空間。(固然,有些人可能一開始就想到用這個佈局了,這裏只是在引導一個思考方式,最終造成一個好的思路而已)
開發者們都深有體會,要實現一個ui圖上的頁面不難,難就難在,存在多種狀況,多種未知因素,進而致使的個別特殊狀況或極端狀況。若是說,開發時間爲100%,那麼還原ui圖的狀況(正常的狀況),佔據了70%時間,30%就花在處理這些極端狀況上了。內心面就以爲很憤懣不平,明明這些特殊狀況和極端狀況出現機率那麼小,缺花費了那麼多時間去搞,甚至把代碼都搞得更復雜,維護也很差。可是,這就是現實,沒辦法了,咱們能作的就是,在開始coding前,儘可能全面考慮,從中制定方案,避免開發到一半發現寫不下去更換方案這就尷尬了。
廢話很少說,這裏會有什麼特殊狀況呢?以餅圖爲例子。
說一下大體背景需求,這裏的餅圖有多少組數據不是固定的,什麼意思,圖上不是有六組數據嘛(紅書發佈、搜狗搜索...),就是圖上六中顏色的數據嘛。這些數據個數,都是未知的,可能不少可能不多。
瞭解基礎背景後,你們有什麼想法。
因爲這些數據個數都是未知的,所以咱們要考慮好兩個極端的狀況,很是少數據的狀況(也就是1組數據),一個是不少數據(無窮)。 會對圖形有什麼影響?變如今?
上面也說了,有多少組數據都是未知,那麼這些數據的名稱(小紅書發佈這些...)也是未知的,天然這些名稱長度也是未知的。那麼問題就來了,若是名字很長怎麼辦?
思路:
三) 既然數據的名稱會有很長的狀況,那麼天然而然,對應的tooltip上的名稱,也會很長。 這裏的tooltip有兩種,一種是懸浮在餅圖上的tooltip,一個是懸浮在圖例上的tooltip
不論哪一種tooltip,存在的問題性質上是同樣的。
大概要想說的就這麼點了,其實真要處理起來,細節的東西仍是不少的,不過我也很少說了。但願你們之後在拿到ui圖拿到需求後,不要過於着急立刻進行開發,仍是先理解好需求,考慮好各類狀況下,在進行編碼。此篇文章或許對你思考起到那麼丁點做用,這樣我也感到開心。 祝各位開發者愈來愈厲害~~~