欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

在Javascript函數中使用classList添加CSS類,但由于最新的類不優先,樣式發生沖突[重復]

榮姿康1年前10瀏覽0評論

我的函數計算屏幕上可見的卡片,如果所有的都顯示了,那么向上箭頭類被添加到我的圖標,如果一些仍然對用戶隱藏,向下箭頭圖標被添加。

const showMoreIcon = document.querySelector('.cta-icon');

function myFunction(){
   const btnIcon = cardsOnShow >= cards.length ? 'arrow-up' : 'arrow-down';
   showMoreIcon.classList.add(btnIcon);
}

<span class="medium-icon"></span>

這是可行的,當我期望時,我可以在DOM中看到正確的類被添加到span中,但是,因為向下箭頭類是首先添加的(在所有可見的卡片顯示之前,用戶必須多次擴展內容)——然后盡管向上箭頭類被添加,它并沒有覆蓋向下箭頭。

我如何確保當向上箭頭被添加時,向下箭頭被刪除,反之亦然?我以前對簡單的打開/關閉圖標使用過toggle,但這不起作用,因為它在關閉前可以展開多次。

級聯考慮了許多因素,級聯是用于確定哪個規則& quotwins & quot當兩個沖突的規則應用于同一元素時。

在HTML元素上定義類的順序不是這些因素之一。

& ltdiv class = & quotfoo bar & quot& gt并且& ltdiv class = & quotbar foo & quot& gt就級聯而言是相同的。

刪除不適用的類別。

if (cardsOnShow >= cards.length) {
    showMoreIcon.classList.add("arrow-up");
    showMoreIcon.classList.remove("arrow-down");
} else {
    showMoreIcon.classList.add("arrow-down");
    showMoreIcon.classList.remove("arrow-up");
}

或者,以只關心單個類的方式編寫CSS來改變方向:

.arrow {
    /* arrow up CSS */
}
.arrow.invert {
    /* override the up rule and replace with the down rule
}

然后

if (cardsOnShow >= cards.length) {
    showMoreIcon.classList.remove("invert");
} else {
    showMoreIcon.classList.add("invert");
}

我建議刪除您不再需要的類:

function myFunction(){
   if (cardsOnShow >= cards.length) {
      showMoreIcon.classList.add('arrow-up')
      showMoreIcon.classList.remove('arrow-down')
   } else {
      showMoreIcon.classList.remove('arrow-up')
      showMoreIcon.classList.add('arrow-down')
   }
}