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
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>
Par conséquent, la déclaration de règles dans le commentaire sera ignorée:
<code>body { background: red; /* background: white; */ }</code>
La déclaration de bloc dans le commentaire sera ignorée:
<code>/* body { background: red; } */</code>
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>
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>
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>
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>
<code>/* 起始和结束标记之间(包括起始和结束标记)的字符将被解析器忽略, */</code>
Cependant, n'utilisez aucun caractères, mais respectez les conventions C et Unix et utilisez # ou //:
<code>body { background: red; /* background: white; */ }</code>
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é" lesdeux 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>
<code>body { background: red /* 缺少分号 */ background: blue; }</code>
<code>body { background: background: blue; /* 此声明未应用 */ }</code>
<code>h1, h2 {color: green } h3, h4 & h5 {color: red } /* h6 {color: black }</code>
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>
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>
<code>// background: ignored; # background: ignored;</code>
(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!