如何修改el-tree默認(rèn)選中項(xiàng)的樣式

如圖,需求是將el-tree改成如下樣式:


需求樣式
  • 默認(rèn)展開(kāi)第一層,左側(cè)添加藍(lán)色條條
  • 點(diǎn)擊任意一項(xiàng)時(shí),左側(cè)添加藍(lán)色條條,其他的藍(lán)色條條均消失

我們可以自由控制el-tree里面文字的樣式,但是由于CSS暫時(shí)不支持通過(guò)子元素去查找父元素,所以無(wú)法通過(guò)自己設(shè)置樣式去修改。

可以觀察到,在開(kāi)啟了highlight-current時(shí),el-tree的選中項(xiàng),均有一個(gè)is-current的類(lèi)名,所以我們可以通過(guò)給is-current下面的el-tree-node__content添加一個(gè)偽類(lèi),就可以實(shí)現(xiàn)左邊的藍(lán)色小條條。

`is-current

代碼如下:

    /deep/.is-current>.el-tree-node__content{
        background: #F4F6F8;
        position: relative;
    }
    /deep/.is-current>.el-tree-node__content::before{
        content: "";
        position: absolute;
        width: 3px;
        height: 100%;
        background: #1989FA;
        top: 0;
        left: 0;;
    }

這樣可以實(shí)現(xiàn)在每次點(diǎn)擊時(shí),左邊都會(huì)有個(gè)小條條的需求。

但是還有一個(gè)問(wèn)題,就是在樹(shù)形圖默認(rèn)展開(kāi)的時(shí)候,該項(xiàng)并沒(méi)有is-current類(lèi)名,這樣在首次加載數(shù)據(jù)時(shí),默認(rèn)展開(kāi)項(xiàng)不會(huì)出現(xiàn)藍(lán)色小條條。
我們可以在默認(rèn)展開(kāi)的時(shí)候,手動(dòng)給第一項(xiàng)加一個(gè)is-current類(lèi)名。最好寫(xiě)到nextTick里面。

this.$nextTick(()=>{
    let dom=document.getElementById('department').childNodes[0]
    dom.className+=' is-current'
})

但是這樣還有一個(gè)問(wèn)題,就是在點(diǎn)擊別的項(xiàng)的時(shí)候,默認(rèn)展開(kāi)項(xiàng)的藍(lán)色條條并沒(méi)有消失。所以我們還要在點(diǎn)擊事件中,把這個(gè)類(lèi)名給刪掉,刪掉后,如果點(diǎn)擊的事默認(rèn)展開(kāi)項(xiàng),組件會(huì)再自動(dòng)加上這個(gè)類(lèi)名,所以不用擔(dān)心~

let dom=document.getElementById('department').childNodes[0]
dom.classList.remove('is-current')
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容