Maison >interface Web >tutoriel CSS >Comment puis-je cibler des éléments CSS en fonction de l'état d'un autre élément ?

Comment puis-je cibler des éléments CSS en fonction de l'état d'un autre élément ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-16 11:48:15463parcourir

How Can I Target CSS Elements Based on the State of Another Element?

Comment cibler sélectivement des éléments en fonction de l'état d'un autre élément avec CSS ?

En CSS, cibler des éléments en fonction de l'état d'un autre L'élément peut être difficile en raison des limitations de la syntaxe actuelle du sélecteur. Pour bien comprendre la situation, nous explorerons trois conditions critiques affectant cette capacité.

Conditions de sélection des éléments en fonction de l'état :

  1. Représentation des états des éléments : Les états des éléments cibles et de référence peuvent-ils être représentés à l'aide d'éléments simples existants sélecteurs ?
  2. Relations structurelles : Pouvons-nous établir une connexion structurelle entre les éléments à l'aide de combinateurs ?
  3. Sujet du sélecteur : L'élément cible peut-il être défini comme sujet du sélecteur complexe ?

Limitations du courant Sélecteurs :

La principale limitation réside dans l'absence de sélecteur de parent ou de frère ou sœur précédent. Cette déficience rend impossible l'établissement de relations telles que :

  • Parent à enfant :Identifier un élément enfant en fonction de l'état de son parent
  • Suivant frère à frère ultérieur : Sélection d'un frère ultérieur en fonction de l'état d'un précédent frère

Solution potentielle avec les sélecteurs 4 et :has() Pseudo-classe :

Bien que la norme actuelle des sélecteurs ne résolve pas ce problème, les avancées à venir dans Selectors 4, introduisez la pseudo-classe :has(), qui a le potentiel d'atténuer ces limitations. :has() permet au sélecteur de rechercher des éléments descendants spécifiques dans l'élément parent auquel il est appliqué.

Par exemple :

section:has(> div[data-status~=finished]) + section > div:matches(.blink, .spin)

Ce sélecteur identifie tous les éléments div dans une section suivante qui ont soit les classes ".blink" soit ".spin", à condition que la section précédente contienne un div avec l'attribut "finished".

Remarque : Le :matches() la pseudo-classe est actuellement en cours de développement et n'est pas encore prise en charge par tous les navigateurs.

Comme solution temporaire, vous pouvez implémenter manuellement cette logique en Javascript en utilisant des fonctions comme Document.querySelector() pour sélectionner les éléments répondant aux conditions.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn