Utilisation de classList dans la fonction Javascript pour ajouter des classes CSS, mais les styles sont en conflit car la dernière classe n'a pas la priorité
P粉738821035
P粉738821035 2023-09-10 17:10:38
0
2
458

Ma fonction compte le nombre de cartes visibles à l'écran et si toutes sont affichées, elle affichera unearrow-up类添加到我的图标中,如果某些卡片仍然对用户隐藏,则arrow添加-downicône.

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

Cela fonctionne, mais je peux voir dans le DOM que la bonne classe est ajoutée àspan中,因为我期望它,因为添加了arrow-down类首先(在显示所有可见卡片之前,用户必须多次展开内容) - 然后,尽管添加了arrow-up类,但它不会覆盖arrow-down。p>

Que diriez-vous de vous assurer d'ajouterarrow-up时,arrow-down被删除,反之亦然?我之前曾使用togglepour obtenir une simple icône d'ouverture/fermeture, mais cela ne fonctionne pas car elle peut s'agrandir plusieurs fois avant de fermer.

P粉738821035
P粉738821035

répondre à tous (2)
P粉579008412

Je recommande de supprimer les cours dont vous n'avez plus besoin :

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') } }
    P粉395056196

    La cascade prend en compte de nombreux facteurs a>, qui est un ensemble de règles utilisées pour déterminer quelle règle « gagne » lorsque deux règles contradictoires sont appliquées au même élément.

    L'ordre dans lequel les classes sont définiessur les éléments HTML ne fait pas partie de ces facteurs.

    Idem en ce qui concerne la cascade.

    Supprimezclasses qui ne doivent pas être appliquées.

    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"); }

    Ou écrivez le CSS d'une manière qui ne se soucie que d'une seule classe pour changer l'orientation :

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

    Alors

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

      Derniers téléchargements
      Plus>
      effets Web
      Code source du site Web
      Matériel du site Web
      Modèle frontal
      À propos de nous Clause de non-responsabilité Sitemap
      Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!