Table des matières
Analyse du problème
solution
Code complet
Choses à noter
Résumer
Maison interface Web tutoriel HTML Correction d'un problème d'échec d'événement de survol et de clic de pseudo-élément CSS : exemple de notation par étoiles

Correction d'un problème d'échec d'événement de survol et de clic de pseudo-élément CSS : exemple de notation par étoiles

Oct 11, 2025 pm 11:33 PM

Correction d'un problème d'échec d'événement de survol et de clic de pseudo-élément CSS : exemple de notation par étoiles

Cet article fournit une solution détaillée au problème selon lequel le pseudo-élément CSS `:after` ne peut pas répondre à l'événement `hover` ou `click` dans le composant de notation par étoiles. En analysant la cause du problème et en la combinant avec un exemple de code, nous nous concentrons sur le rôle de deux propriétés CSS clés « position : relative » et « opacité : 0 » dans la résolution de tels problèmes. Après avoir étudié cet article, vous serez en mesure de maîtriser comment utiliser correctement les pseudo-éléments pour créer des composants d'interface utilisateur interactifs.

Dans le développement Web, l'utilisation de pseudo-éléments CSS (tels que :before et :after) peut facilement ajouter du contenu décoratif sans modifier la structure HTML. Cependant, dans certains cas, les pseudo-éléments peuvent ne pas répondre aux événements de survol ou de clic comme les éléments normaux. Cet article prendra comme exemple un composant de notation par étoiles pour expliquer en détail comment résoudre ce problème.

Analyse du problème

Dans l'exemple de classement par étoiles fourni, le pseudo-élément :after est utilisé pour créer une étoile bleue, et on espère que les événements de survol et de clic changeront la couleur de l'étoile. Cependant, le code initial présente deux problèmes principaux :

  1. Le pseudo-élément est mal positionné : les étoiles bleues (pseudo-élément :after) ne sont pas positionnées par rapport à leur élément parent (libellé), ce qui les fait apparaître en haut de la page.
  2. La transparence par défaut du pseudo-élément est incorrecte : l'étoile bleue doit être masquée par défaut et affichée uniquement au survol ou au clic.

solution

Pour résoudre ces problèmes, vous devez modifier le style CSS et ajouter deux propriétés clés : position : relative et opacité : 0.

  1. Position définie : relative :

    Ajouter position : relative à l'élément label pour positionner le pseudo-élément par rapport à l'étiquette. Cela garantit que les étoiles bleues apparaissent dans la bonne position, c'est-à-dire en chevauchant les étoiles noires.

     .étiquette de notation {
      /* Ajout d'un rapport de position*/
      position : relative ;
      affichage : bloc ;
      curseur : pointeur ;
      largeur : 50 px ;
      arrière-plan : #ccc ;
    }
  2. Définir l'opacité : 0 :

    Ajoutez opacity: 0 au pseudo-élément :after afin qu'il soit masqué par défaut. Ensuite, utilisez les pseudo-classes hover et :checked pour modifier l'opacité afin qu'elle apparaisse au survol ou à la sélection.

     .rating label::après {
      contenu : "★" ;
      position : absolue ;
      famille de polices : fontAwesome ;
      /* Définit l'opacité par défaut sur 0*/
      opacité : 0 ;
      affichage : bloc ;
      taille de police : 50 px ;
      couleur : #1f9cff ;
      haut : 0 ;
    }
    
    .rating label:hover::après,
    .rating label:hover~label::après,
    .rating input:checked~label::après {
      opacité : 1 ;
    }

Code complet

Voici le code modifié complet :

Javascript :

 var numérosDiv = document.getElementById("23");
var aa = document.createElement("div");
aa.className = "note";
pour (soit i = 0; i <p> <strong>CSS :</strong></p><pre class="brush:php;toolbar:false"> .notation {
  affichage : flexible ;
}

.entrée de notation {
  affichage : aucun ;
}

.étiquette de notation {
  /* Ajout d'un rapport de position*/
  position : relative ;
  affichage : bloc ;
  curseur : pointeur ;
  largeur : 50 px ;
  arrière-plan : #ccc ;
}

.rating label::avant {
  contenu : "★" ;
  position : relative ;
  famille de polices : fontAwesome ;
  affichage : bloc ;
  taille de police : 50 px ;
  couleur : #101010 ;
}

.rating label::après {
  contenu : "★" ;
  position : absolue ;
  famille de polices : fontAwesome ;
  /* Définit l'opacité par défaut sur 0*/
  opacité : 0 ;
  affichage : bloc ;
  taille de police : 50 px ;
  couleur : #1f9cff ;
  haut : 0 ;
}

.rating label:hover::après,
.rating label:hover~label::après,
.rating input:checked~label::après {
  opacité : 1 ;
}

HTML :

 

<t>
  <link href="https://cdn.jsdelivr.net/npm/@fortawesome/<a%20class=" __cf_email__ data-cfemail="35535a5b41544250465a5850185347505075031b041b04">[email protégé]/css/fontawesome.min.css" rel="stylesheet" />
</t>ête>

<corps>
  <div id="23"></div>

</corps>

Choses à noter

  • Assurez-vous d'inclure correctement la bibliothèque d'icônes Font Awesome afin que l'icône étoile s'affiche.
  • Ajustez la taille, la couleur et le style des étoiles en fonction des besoins réels.
  • Des effets plus interactifs, tels que des animations ou des transitions, peuvent être ajoutés selon les besoins.

Résumer

En définissant deux propriétés CSS clés : position : relative et opacité : 0, vous pouvez résoudre le problème selon lequel le pseudo-élément CSS : après ne peut pas répondre aux événements de survol ou de clic dans le composant de notation par étoiles. Comprendre ces concepts est crucial pour créer des composants Web interactifs. Dans le développement réel, lorsque vous rencontrez des problèmes similaires, vous pouvez vous référer aux solutions fournies dans cet article et utiliser les propriétés CSS de manière flexible pour obtenir l'effet souhaité.

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 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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT

Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Conseils CSS: Masquer précisément le contenu texte spécifique sans affecter les éléments parentaux Conseils CSS: Masquer précisément le contenu texte spécifique sans affecter les éléments parentaux Sep 16, 2025 pm 10:54 PM

Ce tutoriel détaille comment utiliser CSS pour masquer avec précision le contenu de texte spécifique dans les pages HTML pour éviter que le problème de l'ensemble de l'élément parent soit caché en raison de sélecteurs inappropriés. En ajoutant des classes CSS exclusives aux éléments d'emballage du texte cible et en utilisant l'affichage: aucun; Attribut, les développeurs peuvent obtenir un contrôle raffiné des éléments de page, en veillant à ce que seules les pièces requises soient masquées, optimisant ainsi la mise en page et l'expérience utilisateur.

Comment créer un hyperlien vers une adresse e-mail dans HTML? Comment créer un hyperlien vers une adresse e-mail dans HTML? Sep 16, 2025 am 02:24 AM

Usemailto: inhreftocreateeemaillinks.startwithforbasiclinks, ajouter? Sujet = & body = forpre-fillutContent, andincludemultipleaddressorcc =, bcc = foradvancedOptions.

Capturez les événements de Mousedown avec l'élément parent contenant des iframes interdomains: principes et limitations Capturez les événements de Mousedown avec l'élément parent contenant des iframes interdomains: principes et limitations Sep 20, 2025 pm 11:00 PM

Cet article explore le défi de capturer des événements de Mousedown sur des divs parents contenant des iframes interdomains. Le problème de base est que les politiques de sécurité du navigateur (politique d'origine même) empêchent l'écoute d'événements DOM directe sur le contenu IFRAME inter-domaine. Ce type de capture d'événements ne peut pas être réalisé à moins que le nom de domaine source IFRAME soit contrôlé et que COR soit configuré. L'article expliquera ces mécanismes de sécurité en détail et leurs limites aux interactions des événements et fourniront des alternatives possibles.

JavaScript Fonction externe Call Difficulté Analyse: Emplacement du script et spécification de dénomination JavaScript Fonction externe Call Difficulté Analyse: Emplacement du script et spécification de dénomination Sep 20, 2025 pm 10:09 PM

Cet article explore deux problèmes courants lors de l'appel des fonctions JavaScript externes dans HTML: un temps de chargement de script incorrect ne fait pas partie des éléments DOM, et la dénomination des fonctions peut entrer en conflit avec les événements ou les mots clés intégrés du navigateur. L'article fournit des solutions détaillées, y compris les emplacements de référence de script de peaufinage et les spécifications de dénomination des bonnes fonctions pour s'assurer que le code JavaScript est correctement exécuté.

Comment ajouter une info-bulle sur Hover en HTML? Comment ajouter une info-bulle sur Hover en HTML? Sep 18, 2025 am 01:16 AM

Usethetitleattributeforsimpletooltipsorcssforcustom-styledones.1.addtitle = "text" toanyelementfordtooltips.2.ForStyledToolTips, wraptheelementInacontainer, use.tooltipand.tooltiptextclasseswithcspositioning, pseudo-elelights, et vissibilitycccc

Comment faire du texte enroulé autour d'une image en HTML? Comment faire du texte enroulé autour d'une image en HTML? Sep 21, 2025 am 04:02 AM

USECSSFLOATPROPERTYTOWRAPTextArnanImage: FloatleftFortExtontheRight, FloatRightFortExtontheLeft, AddmarginForspacing, etClearFloatStopReventLayEtLaySues.

Comment définir l'attribut Lang dans HTML Comment définir l'attribut Lang dans HTML Sep 21, 2025 am 02:34 AM

SetThelangAttributeInthehtmltagtospecifypagelanguage, par exemple, français; 2. usocodes comme "ES" ForSpanishor "FR" Forfrench;.

Implémentation de l'empilement vertical des éléments dans la disposition du flexion bootstrap: du côté à la couche Implémentation de l'empilement vertical des éléments dans la disposition du flexion bootstrap: du côté à la couche Sep 21, 2025 pm 10:42 PM

Lorsque vous utilisez Bootstrap pour la mise en page de la page Web, les développeurs rencontrent souvent le problème des éléments affichés côte à côte plutôt que d'empiler verticalement par défaut, en particulier lorsque le conteneur parent applique la disposition Flexbox. Cet article explorera ce défi de mise en page commun en profondeur et fournira une solution: en ajustant l'attribut de direction flexible du conteneur Flex à la colonne, en utilisant la classe d'outils Flex-Colonne de Bootstrap pour obtenir la disposition verticale correcte des balises H1 et des blocs de contenu tels que les formulaires, garantissant que la structure de page répond aux attentes.

See all articles