Maison > interface Web > tutoriel CSS > Pourquoi `h3:nth-child(1):contains(\'a\')` ne fonctionne-t-il pas comme prévu ?

Pourquoi `h3:nth-child(1):contains(\'a\')` ne fonctionne-t-il pas comme prévu ?

DDD
Libérer: 2024-11-29 16:02:11
original
241 Les gens l'ont consulté

Why Doesn't `h3:nth-child(1):contains('a')` Work as Expected?

Sélecteur h3:nth-child(1):contains('a') Inefficacité

Malgré sa syntaxe apparente, le sélecteur h3 : nth-child(1):contains('a') ne parvient pas à exécuter son objectif function.

Sous le capot

Après une enquête plus approfondie, il est révélé que h3:nth-child(1) cible correctement le premier élément h3 dans son conteneur parent. Cependant, h3:nth-child(1):contains('a') ne produit aucun résultat car le sélecteur :contains(), initialement prévu comme une fonctionnalité CSS3, a été omis de la spécification CSS.

 : contain() a été conçu pour faire correspondre les éléments contenant un modèle de texte spécifique. Malheureusement, son fonctionnement posait des problèmes aux performances du navigateur et entraînait des problèmes de sursélection. Par exemple, faire correspondre un élément à l'aide de :contains() correspondrait également à tous ses ancêtres, ce qui pourrait entraîner un comportement inattendu lorsqu'il est combiné avec des sélecteurs universels ou certaines propriétés de style.

Approches alternatives

En raison de l'absence d'alternative de sélecteur CSS appropriée, obtenir le résultat souhaité nécessite des méthodes alternatives. La modification de la structure HTML ou l'utilisation de l'implémentation jQuery de :contains() peuvent être explorées :

  • Sélectionnez un élément h3 comme premier enfant au sein de son parent et avec un texte contenant « a ».

Considérations sur jQuery ou Selenium RC

Pour les utilisateurs de jQuery et Selenium RC, :contains() est implémenté dans le moteur de sélection Sizzle, offrant des fonctionnalités similaires à la spécification CSS3. Cependant, il est recommandé d'utiliser ce sélecteur judicieusement pour éviter les sélections inattendues.

Un raffinement

Enfin, h3:nth-child(1) peut être remplacé par h3 :premier enfant pour une compatibilité améliorée avec les navigateurs en tant que sélecteur CSS2.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal