Maison interface Web tutoriel CSS Pseudo-forages dans CSS (ou comment les navigateurs analysent les styles)

Pseudo-forages dans CSS (ou comment les navigateurs analysent les styles)

Feb 23, 2025 am 11:14 AM

CSS伪注释 (或浏览器如何解析样式)

Bien que la spécification CSS ne soit pas mentionnée, vous pouvez simuler des commentaires de ligne de style C et / ou de style Unix dans les fichiers CSS (avec certaines limitations). D'autres ont déjà écrit à ce sujet (en particulier les annotations CSS sont couvertes dans l'article des fondations Web de SitePoint). Cet article en discutera plus en détail.

Points clés

  • CSS ne prend officiellement que les commentaires multi-lignes de style C, mais les commentaires pseudo utilisent des erreurs d'analyse pour commenter par inadvertance le code.
  • Les commentaires pseudo peuvent être créés en malformant la déclaration CSS, tels que l'omission de demi-colons ou l'utilisation de noms d'attribut non reconnus, entraînant l'ignorance du code ultérieur.
  • Le placement en ligne et en ligne suivante des commentaires pseudo affectera si les règles CSS suivantes sont appliquées et que les commentaires pseudo en ligne peuvent invalider les déclarations ultérieures sur la même ligne.
  • Les pseudo-annotations peuvent également être appliquées aux règles @, et le comportement observé variera selon que les règles @ contiennent un bloc corporel ou une fin avec un point-virgule.
  • Bien que les commentaires pseudo puissent être utilisés pour le débogage, ils sont mal lisibles et ne doivent pas remplacer les commentaires CSS standard dans le code de production.

commentaires CSS

Selon la spécification, le Parser CSS prend formellement un style d'annotation, c'est-à-dire des commentaires multi-lignes du langage de style C, qui utilise la marque de départ /* et la marque finale */ comme indiqué ci-dessous:

<code>/*
  起始和结束标记之间(包括起始和结束标记)的字符将被解析器忽略,
*/</code>
Copier après la connexion
Copier après la connexion

Par conséquent, la déclaration de règles dans le commentaire sera ignorée:

<code>body {
  background: red;
  /*
  background: white;
  */
}</code>
Copier après la connexion
Copier après la connexion

La déclaration de bloc dans le commentaire sera ignorée:

<code>/*
body {
  background: red;
}
*/</code>
Copier après la connexion
Copier après la connexion

Dans ces exemples, nous avons tous intentionnellement Utiliser la syntaxe des commentaires pour demander à l'analyseur d'ignorer le contenu.

Cependant, nous pouvons également le faire de façon inattendue, comme utiliser une déclaration mal formée:

<code>body {
  background: red    /* 缺少分号 */
  background: blue;      
}</code>
Copier après la connexion
Copier après la connexion

Dans cet exemple, aucune des déclarations d'arrière-plan n'est appliquée en raison de l'absence de point-virgule. L'analyseur scanne le point-virgule suivant pour déterminer que l'ensemble de l'instruction à deux lignes est incorrect, de sorte que le contenu de toute l'analyse lexicale est ignoré. La même chose se produira si nous omettons complètement la valeur d'attribut:

<code>body {
  background:
  background: blue; /* 此声明未应用 */
}</code>
Copier après la connexion
Copier après la connexion
et

Ce indique que nous pouvons utiliser une instruction malformée comme ...

pseudo commentaire

Nous appelons ces "commentaires pseudo" à cause de strictement parlant, ce ne sont pas des commentaires qui se terminent à la fin du personnage de la ligne. Au lieu de cela, ils fonctionnent en malformant les entrées ultérieures (même sur les lignes suivantes). Cela est dû au processus de gestion des erreurs des ensembles de règles, des blocs de déclaration et des sélecteurs:

"S'il y a une erreur dans le sélecteur, toute la déclaration doit être ignorée, même si le reste du sélecteur semble raisonnable dans CSS 2.1."

Dans l'exemple suivant (extrait de la spécification), le deuxième ensemble de règles est ignoré en raison du caractère non valide "&" dans le sélecteur:

De même, dans l'exemple suivant, les deuxième et troisième déclarations sont ignorées en raison de la présence de caractères redondants dans l'arrière-plan nom de la propriété:
<code>h1, h2 {color: green }
h3, h4 & h5 {color: red } /* h6 {color: black }</code>
Copier après la connexion
Copier après la connexion

Un coup d'œil rapide sur le clavier anglais révèlera que les caractères spéciaux suivants serviront de commentaire de déclaration à une seule ligne:
<code>body {
  background: red;
  xbackground: white;    /* 属性名称未被识别 */
  y background: blue;    /* 属性名称格式不正确 */
}</code>
Copier après la connexion
Copier après la connexion
<code>/*
  起始和结束标记之间(包括起始和结束标记)的字符将被解析器忽略,
*/</code>
Copier après la connexion
Copier après la connexion

Cependant, n'utilisez aucun caractères, mais respectez les conventions C et Unix et utilisez # ou //:

<code>body {
  background: red;
  /*
  background: white;
  */
}</code>
Copier après la connexion
Copier après la connexion

semi-colon

Le point-virgule est la marque finale de la déclaration de règles. Par conséquent, ils ne peuvent pas "commenter" le texte qui suit. Dans les spécifications, l'analyseur traite un point-virgule pendant en tant que déclaration mal formée (une déclaration de nom, de côlon ou de valeur est manquante).

Comme mentionné précédemment, lorsque le format de commentaire multiligne ordinaire est erroné, c'est-à-dire lorsque les balises de début et de fin ne sont pas équilibrées autour de l'ensemble de règles ou de la déclaration, l'analyseur ignore les déclarations ou les ensembles de règles ultérieurs. Ce qui suit a en fait "commenté" les

deux déclarations d'arrière-plan, car l'analyseur recherchera la prochaine étiquette de fin de déclaration (semi-colon) de la déclaration affectée:

<code>/*
body {
  background: red;
}
*/</code>
Copier après la connexion
Copier après la connexion
Correction de ce problème en ajoutant un point-virgule après les commentaires, avant l'instruction suivante (donc la déclaration bleue de fond sera appliquée):

<code>body {
  background: red    /* 缺少分号 */
  background: blue;      
}</code>
Copier après la connexion
Copier après la connexion
Pour les commentaires pseudo manquant un point-virgule dans une ligne, l'effet est le même:

<code>body {
  background:
  background: blue; /* 此声明未应用 */
}</code>
Copier après la connexion
Copier après la connexion
et corrigez-le en restaurant le point-virgule:

<code>h1, h2 {color: green }
h3, h4 & h5 {color: red } /* h6 {color: black }</code>
Copier après la connexion
Copier après la connexion

en ligne avec la ligne suivante

C'est là que "Pseudo" entre dans le mot "Pseudo Commentaire". Cela peut être une bonne raison de ne pas l'appeler des "commentaires" du tout, car ils violent la convention de fin de ligne des commentaires de la ligne de style C ou Unix.

Les commentaires pseudo placés sur une ligne supprimeront les déclarations sur la ligne suivante. Dans l'exemple suivant, l'arrière-plan sera bleu:

<code>body {
  background: red;
  xbackground: white;    /* 属性名称未被识别 */
  y background: blue;    /* 属性名称格式不正确 */
}</code>
Copier après la connexion
Copier après la connexion
Les pseudo commentaires placés sur la même ligne après

sont supprimés par . Dans l'exemple suivant, l'arrière-plan sera blanc au lieu du bleu:

<code>selector {
  ~ property-name: ignored;
  ` property-name: ignored;
  ! property-name: ignored;
  @ property-name: ignored;
  # property-name: ignored;
  $ property-name: ignored;
  % property-name: ignored;
  ^ property-name: ignored;
  & property-name: ignored;
  * property-name: ignored;
  _ property-name: ignored;
  - property-name: ignored;
  + property-name: ignored;
  = property-name: ignored;
  | property-name: ignored;
  \ property-name: ignored;
  : property-name: ignored;
  property-name: ignored;
  . property-name: ignored;
  > property-name: ignored;
  , property-name: ignored;
  ? property-name: ignored;
  / property-name: ignored;
}</code>
Copier après la connexion
Même la version "compressée" du sélecteur CSS avec une pseudo-annotation en ligne se comportera comme une annotation mono-déclarée. Dans l'exemple suivant, puisque la note de commentaire # reconnue par l'analyseur se termine au demi-virolon, la première déclaration d'arrière-plan est ignorée et la deuxième déclaration d'arrière-plan est reconnue comme correctement formatée et est donc appliquée (dans ce cas, le bleu sera appliqué à fond corporel):

<code>// background: ignored;
  # background: ignored;</code>
Copier après la connexion

(Identique au contenu de suivi. En raison des limitations de l'espace, les créations pseudo-originales restantes de la partie restante sont omises ici.)

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

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.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Grow A Garden - Guide de mutation complet
3 Il y a quelques semaines By DDD
<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Système de fusion, expliqué
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

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

Tutoriel Java
1666
14
Tutoriel PHP
1273
29
Tutoriel C#
1253
24
Une comparaison des fournisseurs de formulaires statiques Une comparaison des fournisseurs de formulaires statiques Apr 16, 2025 am 11:20 AM

Essayons de savoir un terme ici: "fournisseur de formulaire statique". Vous apportez votre HTML

Une preuve de concept pour rendre Sass plus rapidement Une preuve de concept pour rendre Sass plus rapidement Apr 16, 2025 am 10:38 AM

Au début d'un nouveau projet, la compilation SASS se produit en un clin d'œil. Cela se sent bien, surtout quand il est associé à BrowSersync, qui recharge

Actualités hebdomadaires de la plate-forme: attribut HTML Loading, les principales spécifications Aria et le passage de iframe à Shadow Dom Actualités hebdomadaires de la plate-forme: attribut HTML Loading, les principales spécifications Aria et le passage de iframe à Shadow Dom Apr 17, 2025 am 10:55 AM

Dans cette semaine, le Roundup des nouvelles de la plate-forme, Chrome présente un nouvel attribut pour le chargement, les spécifications d'accessibilité pour les développeurs Web et la BBC Moves

Certains pratiques avec l'élément de dialogue HTML Certains pratiques avec l'élément de dialogue HTML Apr 16, 2025 am 11:33 AM

C'est moi qui regarde l'élément HTML pour la première fois. J'en ai été conscient depuis un certain temps, mais il ne l'a pas encore pris pour un tour. Il a un peu cool et

Forme de papier Forme de papier Apr 16, 2025 am 11:24 AM

L'achat ou la construction est un débat classique de la technologie. Construire des choses vous-même peut être moins cher car il n'y a pas d'article de ligne sur votre facture de carte de crédit, mais

Où devrait «abonner au podcast» vers le lien? Où devrait «abonner au podcast» vers le lien? Apr 16, 2025 pm 12:04 PM

Pendant un certain temps, iTunes était le grand chien du podcasting, donc si vous avez lié "Abonnez-vous au podcast" pour aimer:

C'est tout dans la tête: gérer la tête de document d'un site alimenté par réact avec un casque React C'est tout dans la tête: gérer la tête de document d'un site alimenté par réact avec un casque React Apr 15, 2025 am 11:01 AM

Le chef de document n'est peut-être pas la partie la plus glamour d'un site Web, mais ce qui y va est sans doute tout aussi important pour le succès de votre site Web que son

Options pour héberger vos propres analyses non-javascript Options pour héberger vos propres analyses non-javascript Apr 15, 2025 am 11:09 AM

Il existe de nombreuses plates-formes d'analyse pour vous aider à suivre les données des visiteurs et d'utilisation sur vos sites. Peut-être plus particulièrement Google Analytics, qui est largement utilisé

See all articles