Layui-tree組件節(jié)點(diǎn)圖標(biāo)定制與操作按鈕優(yōu)化
1. Layui-tree組件節(jié)點(diǎn)圖標(biāo)定制實(shí)戰(zhàn)作為一名長(zhǎng)期使用Layui的前端開發(fā)者我經(jīng)常遇到需要自定義樹形組件圖標(biāo)的需求。Layui的tree組件雖然開箱即用但在實(shí)際業(yè)務(wù)場(chǎng)景中默認(rèn)圖標(biāo)往往無(wú)法滿足產(chǎn)品經(jīng)理的審美要求。今天就來(lái)分享如何深度定制tree組件的節(jié)點(diǎn)圖標(biāo)和右側(cè)操作按鈕。1.1 理解Layui-tree的圖標(biāo)體系Layui-tree的圖標(biāo)分為三個(gè)層級(jí)節(jié)點(diǎn)圖標(biāo)表示節(jié)點(diǎn)類型的文件夾/文件圖標(biāo)展開折疊圖標(biāo)控制子節(jié)點(diǎn)顯隱的小三角圖標(biāo)操作區(qū)圖標(biāo)右側(cè)的編輯、刪除等功能圖標(biāo)這些圖標(biāo)都繼承自Layui的iconfont體系默認(rèn)使用layui-icon字體圖標(biāo)。通過(guò)Chrome開發(fā)者工具檢查元素可以看到類似這樣的結(jié)構(gòu)i classlayui-icon layui-tree-spread/i i classlayui-icon layui-tree-file/i1.2 圖標(biāo)替換的三種方案方案一CSS覆蓋法推薦直接覆蓋默認(rèn)的iconfont內(nèi)容/* 修改展開圖標(biāo) */ .layui-tree-entry .layui-tree-spread:before { content: \e61f; /* 新的unicode編碼 */ } /* 修改文件圖標(biāo) */ .layui-tree .layui-tree-file:before { content: \e621; }提示可以通過(guò)layui官網(wǎng)的圖標(biāo)庫(kù)查找需要的unicode編碼方案二API配置法在初始化tree時(shí)通過(guò)參數(shù)配置layui.tree.render({ elem: #tree, data: [], icon: { open: layui-icon-username, // 展開圖標(biāo) close: layui-icon-rate, // 折疊圖標(biāo) normal: layui-icon-face // 常規(guī)節(jié)點(diǎn) } });方案三DOM替換法動(dòng)態(tài)場(chǎng)景適用于需要根據(jù)節(jié)點(diǎn)屬性動(dòng)態(tài)改變圖標(biāo)的場(chǎng)景tree.on(tree(render), function(obj){ $(obj.elem).find(.layui-tree-icon).each(function(){ if($(this).hasClass(layui-tree-file)){ $(this).html(i classyour-icon-class/i); } }); });2. 右側(cè)操作區(qū)圖標(biāo)深度定制2.1 基礎(chǔ)操作按鈕配置在tree的render配置中添加operate參數(shù)layui.tree.render({ elem: #tree, data: [], operate: function(obj){ return [ i classlayui-icon layui-icon-edit/i, i classlayui-icon layui-icon-delete/i ]; } });2.2 高級(jí)定制技巧動(dòng)態(tài)顯示操作按鈕operate: function(obj){ var btns []; if(obj.data.level 1){ btns.push(i classlayui-icon layui-icon-add-1/i); } btns.push(i classlayui-icon layui-icon-edit/i); return btns; }自定義按鈕事件tree.on(tree(operate), function(obj){ if(obj.type edit){ layer.prompt({}, function(value, index){ // 處理編輯邏輯 layer.close(index); }); } });3. 實(shí)戰(zhàn)中的避坑指南3.1 圖標(biāo)閃爍問(wèn)題在動(dòng)態(tài)加載樹節(jié)點(diǎn)時(shí)可能會(huì)出現(xiàn)圖標(biāo)閃爍。解決方案.layui-tree [lay-id] i { visibility: hidden; } .layui-tree [lay-id].layui-tree-entry i { visibility: visible; }3.2 圖標(biāo)對(duì)齊問(wèn)題自定義圖標(biāo)可能出現(xiàn)不對(duì)齊情況需要調(diào)整.layui-tree-icon { vertical-align: middle; margin-right: 5px; }3.3 移動(dòng)端適配在移動(dòng)端需要增大點(diǎn)擊區(qū)域.layui-tree-operate i { padding: 0 10px; }4. 擴(kuò)展應(yīng)用結(jié)合其他Layui組件4.1 與Dropdown組件結(jié)合operate: function(obj){ return [i classlayui-icon layui-icon-more-vertical/i]; }, done: function(elem){ layui.dropdown.render({ elem: $(elem).find(.layui-tree-operate), data: [{ title: 編輯, id: edit }], click: function(id){ console.log(id); } }); }4.2 與Tab組件聯(lián)動(dòng)tree.on(tree(click), function(obj){ layui.element.tabAdd(demo, { title: obj.data.title, content: 內(nèi)容obj.data.id }); });5. 性能優(yōu)化建議圖標(biāo)預(yù)加載對(duì)于自定義的iconfont建議在頁(yè)面初始化時(shí)預(yù)加載layui.use([tree, icon], function(){});減少DOM操作在大量節(jié)點(diǎn)場(chǎng)景下避免使用jQuery直接操作DOM虛擬滾動(dòng)超過(guò)500個(gè)節(jié)點(diǎn)時(shí)建議實(shí)現(xiàn)虛擬滾動(dòng).layui-tree-box { height: 500px; overflow-y: auto; }在實(shí)際項(xiàng)目中我遇到過(guò)3000節(jié)點(diǎn)的性能問(wèn)題最終通過(guò)以下方案解決后端分頁(yè)加載前端動(dòng)態(tài)渲染防抖搜索功能節(jié)點(diǎn)懶加載6. 主題適配方案6.1 深色模式適配media (prefers-color-scheme: dark) { .layui-tree { background: #333; color: #eee; } .layui-tree-icon { color: #aaa; } }6.2 多主題切換function setTheme(theme){ $(.layui-tree).removeClass(theme-a theme-b).addClass(theme); }7. 常見問(wèn)題解決方案圖標(biāo)不顯示檢查layui.css是否加載確認(rèn)iconfont文件路徑正確查看控制臺(tái)是否有404錯(cuò)誤點(diǎn)擊事件失效確認(rèn)tree實(shí)例已正確初始化檢查事件綁定時(shí)機(jī)是否正確排查是否有z-index遮擋動(dòng)態(tài)更新問(wèn)題// 正確做法 tree.reload(id, { data: newData }); // 錯(cuò)誤做法 $(#tree).html().tree({data:newData});8. 與其他框架的兼容處理8.1 在Vue中使用// 組件內(nèi) mounted(){ layui.use(tree, () { this.tree layui.tree; this.tree.render({ elem: this.$el, data: this.data }); }); }8.2 與jQuery插件共存$.fn.extend({ layuiTree: function(options){ return this.each(function(){ layui.tree.render($.extend({ elem: this }, options)); }); } }); $(#tree).layuiTree({data:[]});9. 實(shí)際案例權(quán)限管理系統(tǒng)改造最近改造的一個(gè)后臺(tái)系統(tǒng)要求部門節(jié)點(diǎn)顯示建筑圖標(biāo)人員節(jié)點(diǎn)顯示用戶圖標(biāo)管理員顯示皇冠圖標(biāo)根據(jù)權(quán)限動(dòng)態(tài)顯示操作按鈕實(shí)現(xiàn)代碼layui.tree.render({ elem: #permTree, data: data, icon: { close: layui-icon layui-icon-triangle-r, open: layui-icon layui-icon-triangle-d, normal: function(obj){ switch(obj.data.type){ case dept: return layui-icon-home; case user: return obj.data.isAdmin ? layui-icon-username : layui-icon-user; } } }, operate: function(obj){ if(!hasPerm(edit)) return []; return [i classlayui-icon layui-icon-edit/i]; } });10. 未來(lái)升級(jí)建議雖然Layui已經(jīng)停止維護(hù)但社區(qū)版仍然可用。對(duì)于長(zhǎng)期項(xiàng)目建議自行維護(hù)一份iconfont資源提取tree組件核心邏輯考慮逐步遷移到其他現(xiàn)代框架建立組件版本管理機(jī)制我在項(xiàng)目中實(shí)際采用的過(guò)渡方案是保留Layui的基礎(chǔ)CSS重寫JS交互邏輯逐步替換為自定義組件使用webpack按需打包這個(gè)過(guò)渡過(guò)程大約需要2-3個(gè)迭代周期可以平穩(wěn)遷移而不影響現(xiàn)有功能。

相關(guān)新聞

Java+Vue汽車票預(yù)訂系統(tǒng):畢業(yè)設(shè)計(jì)全棧項(xiàng)目實(shí)戰(zhàn)指南

Java+Vue汽車票預(yù)訂系統(tǒng):畢業(yè)設(shè)計(jì)全棧項(xiàng)目實(shí)戰(zhàn)指南

這次我們來(lái)看一個(gè)面向計(jì)算機(jī)專業(yè)畢業(yè)設(shè)計(jì)的完整項(xiàng)目:汽車票網(wǎng)上預(yù)訂系統(tǒng)。這個(gè)項(xiàng)目采用 Java Vue Spring Boot MySQL 技術(shù)棧,提供了從源碼、數(shù)據(jù)庫(kù)到配套文檔、答辯教程的一站式開源解決方案,并且免費(fèi)。對(duì)于正在尋找畢業(yè)設(shè)計(jì)課題&#xff…

2026/8/3 12:38:48 閱讀更多
呼和浩特中央空調(diào)維修-周邊全小區(qū)覆蓋-歐米到家本地師傅當(dāng)日上門|排查準(zhǔn)不亂收費(fèi)不返工|熟悉全城區(qū)機(jī)型管路|修后有質(zhì)保|

呼和浩特中央空調(diào)維修-周邊全小區(qū)覆蓋-歐米到家本地師傅當(dāng)日上門|排查準(zhǔn)不亂收費(fèi)不返工|熟悉全城區(qū)機(jī)型管路|修后有質(zhì)保|

前言盛夏高溫持續(xù)攀升,中央空調(diào)作為呼和浩特家庭與商業(yè)空間的剛需設(shè)備,一旦出現(xiàn)制冷失效、漏水異響、跳閘停機(jī)等故障,將嚴(yán)重影響居住與辦公體驗(yàn)。歐米到家作為呼和浩特本土深耕多年的專業(yè)家電維修平臺(tái),不僅專注于中央空調(diào)全系統(tǒng)深…

2026/8/3 12:28:47 閱讀更多
2026平頂山黃金回收白銀回收鉑金回收價(jià)格高無(wú)損耗專業(yè)鑒定本地人常去門店聯(lián)系方式推薦

2026平頂山黃金回收白銀回收鉑金回收價(jià)格高無(wú)損耗專業(yè)鑒定本地人常去門店聯(lián)系方式推薦

2026平頂山黃金白銀鉑金回收實(shí)測(cè)榜單|公安備案中檢認(rèn)證無(wú)折舊費(fèi)本地人常選門店 平頂山貴金屬回收店鋪遍地叢生,行業(yè)套路層出不窮,不少市民變現(xiàn)遭遇虛高報(bào)價(jià)、克扣損耗、未經(jīng)同意熔金壓價(jià)等問(wèn)題。為幫助本地居民規(guī)避消費(fèi)陷阱,小編實(shí)…

2026/8/3 12:28:47 閱讀更多
AI圖表工具:自然語(yǔ)言生成ECharts配置的實(shí)踐指南

AI圖表工具:自然語(yǔ)言生成ECharts配置的實(shí)踐指南

1. 項(xiàng)目概述:AI圖表工具的革新價(jià)值 作為一名長(zhǎng)期和數(shù)據(jù)可視化打交道的開發(fā)者,我至今記得第一次用ECharts時(shí)被復(fù)雜配置支配的恐懼。直到最近發(fā)現(xiàn)這款A(yù)I圖表工具,才真正體會(huì)到什么叫"科技改變生產(chǎn)力"。它完美解決了傳統(tǒng)圖表工具的三個(gè)…

2026/8/3 13:38:50 閱讀更多
電池箱體焊完就翹?激光焊接三板斧守住IP67

電池箱體焊完就翹?激光焊接三板斧守住IP67

所謂新能源汽車電池箱體激光焊接,是指用激光束將鋁合金電池托盤的下殼體、側(cè)板、加強(qiáng)筋、密封面等組件連接為一個(gè)整體結(jié)構(gòu),要求幾十米的焊縫全程氣密、整體變形控制在裝配公差以內(nèi)、焊接接頭強(qiáng)度不低于母材的90%。電池箱體是動(dòng)力電池包的第一道物理防線?!?/p>

2026/8/3 13:38:50 閱讀更多
QQ音樂(lè)格式轉(zhuǎn)換終極指南:qmcdump完整使用教程

QQ音樂(lè)格式轉(zhuǎn)換終極指南:qmcdump完整使用教程

QQ音樂(lè)格式轉(zhuǎn)換終極指南:qmcdump完整使用教程 【免費(fèi)下載鏈接】qmcdump 一個(gè)簡(jiǎn)單的QQ音樂(lè)解碼(qmcflac/qmc0/qmc3 轉(zhuǎn) flac/mp3),僅為個(gè)人學(xué)習(xí)參考用。 項(xiàng)目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 你是否曾經(jīng)下載…

2026/8/3 13:38:50 閱讀更多
Java與Python集合遍歷時(shí)并發(fā)修改異常與迭代器失效的實(shí)戰(zhàn)解決方案

Java與Python集合遍歷時(shí)并發(fā)修改異常與迭代器失效的實(shí)戰(zhàn)解決方案

最近在開發(fā)過(guò)程中,你是否也遇到過(guò)這樣的場(chǎng)景:一個(gè)看似簡(jiǎn)單的功能,代碼邏輯清晰,但運(yùn)行時(shí)卻總是拋出一些令人費(fèi)解的異常,比如 NullPointerException 、 IndexError ,或者某個(gè)配置項(xiàng)死活不生效&#xff1…

2026/8/3 13:38:50 閱讀更多
187、TinyML實(shí)戰(zhàn)項(xiàng)目:智能安防與入侵檢測(cè)

187、TinyML實(shí)戰(zhàn)項(xiàng)目:智能安防與入侵檢測(cè)

TinyML實(shí)戰(zhàn)項(xiàng)目:智能安防與入侵檢測(cè) 從一次半夜誤報(bào)說(shuō)起 凌晨三點(diǎn),手機(jī)瘋狂震動(dòng)。家里部署的“智能安防系統(tǒng)”把一只路過(guò)的野貓識(shí)別成了“可疑入侵者”。這不是第一次了——過(guò)去兩周,我已經(jīng)被蚊子、窗簾飄動(dòng)、甚至陽(yáng)光移動(dòng)的影子反復(fù)折騰??蛻裟沁吀鼞K,一套部署在倉(cāng)庫(kù)的…

2026/8/3 13:28:50 閱讀更多
全球僅7家廠商通過(guò)ISO/IEC 27001認(rèn)證的名片AI引擎,我們逆向拆解了它的字段置信度熔斷機(jī)制

全球僅7家廠商通過(guò)ISO/IEC 27001認(rèn)證的名片AI引擎,我們逆向拆解了它的字段置信度熔斷機(jī)制

更多請(qǐng)點(diǎn)擊: https://kaifayun.com 第一章:全球僅7家廠商通過(guò)ISO/IEC 27001認(rèn)證的名片AI引擎概覽 名片AI引擎是企業(yè)級(jí)智能文檔處理的核心組件,專注于高精度OCR、語(yǔ)義結(jié)構(gòu)化提取與跨語(yǔ)言實(shí)體對(duì)齊。截至2024年第三季度,全球范圍內(nèi)僅…

2026/8/3 0:07:47 閱讀更多
MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案 【免費(fèi)下載鏈接】MoneyPrinterPlus AI一鍵批量生成各類短視頻,自動(dòng)批量混剪短視頻,自動(dòng)把視頻發(fā)布到抖音,快手,小紅書,視頻號(hào)上,賺錢從來(lái)沒(méi)有這么容易過(guò)! 支持本地語(yǔ)音模型chatTTS,fasterwhisper,…

2026/8/3 7:44:46 閱讀更多
3分鐘搞定!QQ空間歷史說(shuō)說(shuō)完整備份終極指南

3分鐘搞定!QQ空間歷史說(shuō)說(shuō)完整備份終極指南

3分鐘搞定!QQ空間歷史說(shuō)說(shuō)完整備份終極指南 【免費(fèi)下載鏈接】GetQzonehistory 獲取QQ空間發(fā)布的歷史說(shuō)說(shuō) 項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想過(guò),那些年發(fā)過(guò)的QQ空間說(shuō)說(shuō),那些記錄青春的文字…

2026/8/3 12:53:38 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應(yīng)用材料(Applied Materials)公司生產(chǎn)的一款用于半導(dǎo)體設(shè)備的I/O信號(hào)分配電路板。該型號(hào)(0100-02186)的核心特點(diǎn)如下:專用于Endura等半導(dǎo)體工藝腔室。集成信號(hào)路由與分配功能。連接控制…

2026/8/2 2:51:21 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)是日本日清(Nissei)品牌的一款工業(yè)用三相異步電機(jī),適用于自動(dòng)化設(shè)備及通用機(jī)械驅(qū)動(dòng)。該型號(hào)(FFMN-32L-10-T0 40AX)的核心特點(diǎn)如下:三相交流異步電動(dòng)機(jī)。額定…

2026/8/2 2:52:49 閱讀更多