Ztree改版 - 將圖標字體化 - fontAwesome


 

引言

ps:小白可以一看,大神勿打~

用過 ztree 的盆友們都知道,ztree 功能強大,就功能上來說,追求着“無處不按鈕”的體驗,但好用不好看。可能有朋友說:“我這棵樹只有我自己看,夠用就行”

(我聽不見,你沒追求~)。對於這種更多時候是在背面展示的內容,我們追求一個詞:簡約,什么叫簡約?簡約就是:簡單中透露着大氣,朴實中內斂着奢華。呃~

對不起,扯遠了,看最終效果圖:

對比一下原型ztree,想要女神女友,還需改版ztree~

正文

對於ztree,我們審查下代碼就能發現,它里面的圖標是一整張圖片,以背景圖片配合background-position,來實現的。這樣做的好處從性能方面來說儲存消耗小,加載快,從更新方面來說

,新版本圖標上傳圖片覆蓋就行了,當然前提是你得有個ui或者懂ps和ai的前端,光ps肯定是不夠的,圖標必須是矢量才能保證清晰度效果。

知道了 ztree 圖標是背景圖片方式生成的,那么改版ztree我們就有了兩個思路:

  第一種:做一張尺寸一樣的圖片(注意圖片里面圖標大小也一致 )去覆蓋,這樣的方便之處在於我們只需要知道背景圖片在哪個文件夾

  就能完成改版,不需要去看源碼(想想挺方便哈),而條件在上面提過了;

  第二種:注意它是背景圖片,如果我們代碼中在某圖標位置添加文字(當然不能過多,不然會撐大)或尺寸合適的圖片並不會改變布局,而是覆蓋在背景圖片上,

  這樣的話我們就可以在背景圖片所在的標簽里面加上 fontawesome 中對應的類名就可以實現效果了,至於那張背景圖,刪掉唄~

步驟

找個 demo 看一下 ztree 中各個圖片對應的標簽(折疊,文件夾,復選框,點線)有什么特別之處,比如說類名 id等,這里我們以 折疊圖標為例,下面是源代碼:

 

我們可以看到現在折疊圖片是折疊狀態的:類名對應 roots_close。

展開源碼:

 

展開對應的類名是:roots_open。

這樣看來我們可以想到:對應於不同的狀態  -  不同的類名  -  不同的類名對應不同的樣式即背景圖片位置不同  -  不同的圖標。

也就是說我們只需要在不同的狀態的時候添加相應的 fontawesome 圖標調用類名就可以輕松完全圖標修改了,到底是不是這樣呢?試試看。

打開 ztree中 jquery.ztree.all.js,查找: root_open :

 

查找結果顯示找不到,這傷害來得太突然,突然就有了一種“朕的大清要亡了的感覺”,冷靜,這個不行,查另一個看看,還有個 switch ,查找:

 

這下就有驚喜了,看圖我們可以知道 switch 被定義為了 SWITCH,這樣的話我們瞬間就可以想到會不會是 root_close 是由兩個

變量通過 _ 組合起來的呢,試一下就知道了, 查找 root :

 

到了這里,暗松口氣外加會心一笑:有了。查找 ROOT,這里我選擇了區分大小寫查找,因為我們已經知道了它是被定義為了大寫 ROOT 參數,后面只會以

ROOT 形式出現在需要它的位置,看代碼:

顧名思義,這個方法是用來生成 節點線類名,折疊圖標不就是兩根線么?所以是它是它就是它。注意上圖中的 lineClass 數組,由它的名字我們猜測這是生成圖標的數組,但現在它是空的,

為了知道它到底是怎么用的,我們隨便添加進去一個類名: testThis ,刷新一下看看:

 

可以清楚看到在代碼中這個 testThis 被添加在了折疊圖標的標簽類名中,這樣的話我們已經解決了折疊圖標折疊起來的狀態圖標,但還沒完,還有展開狀態(可能有盆友心里已經在問了:還沒完吧?還有最后一層的子節點呢?最后一層的子節點應該是沒有折疊圖標的啊,先保留問題),繼續查找 ROOT,通過斷點調試,最后我們鎖定:

至於為什么鎖定在這里,有興趣的盆友可以自己試一下就知道了,這里不做解釋了,這里我們再一次看到了 DOCU ,而且如果細心觀察了的話我們發現它總是出現最后(猜測:最后的子節點?)

寫下如下代碼調試查看結果:

折疊:

展開:

OK,這樣我們就完成了折疊圖標的替換,通過大同小異的方法,我們一次替換 其余圖標,這時我們發現最后一層的子節點上也有折疊圖標,這很明顯不科學,問題應該是出在

生成折疊圖標方法上面:

做出如下處理,重置生成 類數組:

問題得到完美解決。

接下來我們要做的就是完成這次改版,雖然這樣也能用,但是如果每次修改都需要到代碼里面到處查找修改,這就不符合我們追求的優化維護,怎么辦呢?

很簡單,最開始的時候我們就注意到了,ztree 幾乎將所有元素都定義為了參數來調用,如此我們也可以自己新建一個參數來定義這些類,並賦予默認值,這樣

以后要修改就只需要修改默認值就行了,看圖:

 

調用方式: consts.usericon.XXXX,如: consts.usericon.CLOSE .

最終效果圖:

注意:ztree本身不提供增加節點按鈕,需要自定義方法,這個有興趣的盆友可以自己了解一下。

最后附上整個demo給需要的朋友參考一下,有疑問可以留言互相交流,多謝各位看官,抱拳~

下載demo

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM