Maison > Article > interface Web > Choses que vous ne savez peut-être pas sur les variables CSS - Règles de dénomination et attributions de valeurs
Dans mon exploration des variables CSS, j'ai découvert beaucoup de potentiels passionnants et de détails subtils qui ne sont pas toujours apparents au premier coup d'œil. Comme beaucoup de développeurs, j'ai d'abord utilisé les variables CSS de manière simple et directe, rencontrant rarement des cas extrêmes. Cette approche est courante et efficace à de nombreuses fins, mais elle signifie qu’il y a beaucoup plus à explorer et à expérimenter. À mon avis, acquérir une compréhension plus approfondie des règles de dénomination des variables CSS et des attributions de valeurs valides peut considérablement élargir la portée et la flexibilité de leurs applications.
J'ai compilé mes recherches et mes idées ici, dans le but de fournir un aperçu plus approfondi et complet des variables CSS. J'espère que cet article sera une ressource pour vous aider, vous et moi-même, à libérer tout le potentiel des variables CSS et à découvrir de nouvelles possibilités en matière de style.
Cette série suppose que vous êtes déjà familier avec les bases des variables CSS, telles que la syntaxe --name: value et la fonction var(--name), ou que vous êtes à l'aise avec les concepts fondamentaux couvert dans le premier tiers de cette introduction aux variables CSS.
Lors de l'utilisation de variables CSS, la dénomination est la première étape essentielle. Voici quelques directives clés pour nommer les variables CSS :
Tous les noms de propriétés personnalisées doivent commencer par deux tirets (--), par exemple, --main-color. Ce préfixe aide le navigateur à distinguer les propriétés personnalisées des propriétés CSS natives, réduisant ainsi les risques de conflits.
Les noms de propriétés personnalisées CSS sont sensibles à la casse, ce qui signifie que --main-color et --Main-Color sont traités comme deux variables entièrement différentes. Il est important de maintenir une casse cohérente dans tout votre code pour éviter de référencer par erreur des variables avec des casses incompatibles, ce qui peut entraîner des erreurs d'analyse.
Exemple :
:root { --main-color: blue; --Main-Color: red; /* Case difference, treated as a separate property */ } .box1 { color: var(--main-color); /* Refers to --main-color, resulting in blue */ } .box2 { color: var(--Main-Color); /* Refers to --Main-Color, resulting in red */ }
Un autonome -- est réservé et peut avoir des objectifs spécifiques dans les spécifications futures. Par conséquent, évitez de l’utiliser comme nom de propriété personnalisée.
Exemple :
:root { --: green; /* Invalid: a standalone -- is reserved */ --custom-color: green; /* Valid: custom property avoids reserved name */ } .text { color: var(--custom-color); /* Uses the custom property */ }
Lors de la nomination des variables CSS, il est crucial de prendre en compte les caractères et les conventions autorisés, qui améliorent la lisibilité et évitent les conflits.
Exemple
L'exemple suivant montre la flexibilité de la dénomination des variables CSS et comment gérer correctement les caractères spéciaux :
:root { --main-color: blue; --Main-Color: red; /* Case difference, treated as a separate property */ } .box1 { color: var(--main-color); /* Refers to --main-color, resulting in blue */ } .box2 { color: var(--Main-Color); /* Refers to --Main-Color, resulting in red */ }
Les variables CSS peuvent contenir différents types de valeurs, mais elles doivent également suivre des règles de syntaxe spécifiques. Examinons quelques exemples d'attributions de valeurs valides :
:root { --: green; /* Invalid: a standalone -- is reserved */ --custom-color: green; /* Valid: custom property avoids reserved name */ } .text { color: var(--custom-color); /* Uses the custom property */ }
Comme le montrent ces exemples, les variables CSS prennent en charge un large éventail de valeurs. Cependant, étant donné que les variables CSS font partie des propriétés CSS, elles doivent suivre la syntaxe CSS générale, comme la correspondance des guillemets et des parenthèses. Explorons quelques valeurs qui ne répondent pas à ces exigences.
L'attribution de valeurs non valides aux variables CSS peut provoquer des erreurs d'analyse, ce qui peut entraîner des problèmes dans les styles ultérieurs. Voici quelques exemples d'attributions de valeurs non valides :
:root { /* Naming with Unicode characters */ --primary-color: #3498db; --secondary-color: #e74c3c; /* Using an Emoji as a variable name */ --?: #2ecc71; /* Special characters with escape sequences, resulting in --B&W? */ --B\&W\?: #2ecc72; /* Using Unicode escape codes, equivalent to --B&W? */ --BWF: #abcdef; } .container { color: var(--BWF); /* Result is #abcdef */ } .container-alt { color: var(--B\&W\?); /* Result is #abcdef */ }
Les variables CSS, comme les autres propriétés CSS, prennent en charge l'indicateur !important, qui affecte la priorité. Voici un exemple montrant comment !important impacte la priorité des variables :
:root { --foo: if(x > 5) this.width = 10; --string-with-semicolon: "font-size: 16px;"; /* Strings can include semicolons */ --complex-calc: calc(100% / 3 + 20px); /* Complex calculations with calc() */ --negative-value: -10px; /* Negative values */ --multiple-values: 10px 20px 30px 40px; /* Multiple values, e.g., for margin or padding */ --unitless-number: 1.5; /* Unitless numbers */ --nested-var: var(--string-with-semicolon); /* Nested variables using var() */ --empty-string: ; /* Empty string */ --color: rgba(255, 0, 0, 0.5); /* Color functions */ --special-chars: "Content: \"Hello\""; /* Strings with special characters */ }
Dans cet exemple, #target et .cls affectent tous deux la variable --text-color sur le div. Par spécificité du sélecteur, #target doit remplacer .cls. Cependant, comme --text-color dans .cls utilise !important, la couleur finale appliquée à div sera verte. Il est important de noter que !important n’impacte que la priorité entre les variables et ne se propage pas à la propriété faisant référence à la variable. La couleur résultante est simplement verte, pas verte !important.
:root { --main-color: blue; --Main-Color: red; /* Case difference, treated as a separate property */ } .box1 { color: var(--main-color); /* Refers to --main-color, resulting in blue */ } .box2 { color: var(--Main-Color); /* Refers to --Main-Color, resulting in red */ }
Utiliser initial comme valeur de variable CSS est un comportement unique. Lorsqu'elle est affectée à une variable, initial rend la variable invalide, provoquant son échec lors de l'accès avec var(). Cela diffère d’une valeur vide (--empty: ;), qui ne rendra pas une propriété invalide. L’utilisation de initial « réinitialise » effectivement une variable, annulant ainsi sa définition. (Référence)
Les variables CSS prennent en charge le référencement d'autres variables, mais si un cycle de dépendance se produit, toutes les variables du cycle deviennent invalides. Voici un exemple de cycle de dépendance :
:root { --: green; /* Invalid: a standalone -- is reserved */ --custom-color: green; /* Valid: custom property avoids reserved name */ } .text { color: var(--custom-color); /* Uses the custom property */ }
Dans cet exemple, --one, --two et --trois se référencent mutuellement, créant ainsi un cycle. En conséquence, les trois variables deviennent invalides en raison de la dépendance circulaire, ce qui les empêche de se résoudre. (Référence)
Dans cet article, nous avons approfondi les règles de dénomination et d'attribution de valeurs pour les variables CSS, expliquant comment définir et gérer correctement ces variables tout en évitant les erreurs d'analyse courantes. Grâce à ces connaissances fondamentales, vous devriez être en mesure d'utiliser les variables CSS plus efficacement dans vos futurs projets de développement.
Le prochain article explorera comment utiliser var() pour récupérer les valeurs des variables CSS, ainsi que des scénarios d'application spécifiques pour rendre votre utilisation des variables CSS encore plus flexible et puissante.
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!