Maison > interface Web > tutoriel CSS > Introduction à la variable native var en CSS/CSS3

Introduction à la variable native var en CSS/CSS3

一个新手
Libérer: 2017-10-26 09:33:51
original
2641 Les gens l'ont consulté

Utilisation de la syntaxe

Regardons d'abord un exemple :
code html :


<p class="element">这是一段文字</p>
Copier après la connexion

code css :


.element {
  width:200px;
  height:200px;
  --main-bg-color: #000;
  color:#fff;
  background-color: var(--main-bg-color);
}
Copier après la connexion

Obtenir l'effet :

Le résultat est que l'arrière-plan de l'élément DOM devient noir.

La syntaxe native de définition des variables en CSS est : --*, et la syntaxe d'utilisation des variables est : var(--*) , où * représente le nom de notre variable. Concernant la dénomination, divers langages ont certaines indications. Par exemple, les sélecteurs CSS ne peuvent pas commencer par un nombre, et les variables en JS ne peuvent pas être directement numériques. Cependant, dans les variables CSS, ces restrictions ne sont pas présentes, par exemple :

<. 🎜 >


:root{
    --main-bg-color: #000;
}.element {
    background-color: var(--main-bg-color);
}
Copier après la connexion
Remarque : les noms de variables ne peuvent pas contenir de caractères tels que

$,[,^,(,%. Les caractères ordinaires sont limités à "<🎜. > 数字[0-9] » « 字母[a-zA-Z] » « 下划线_ » et « 短横线-" ces combinaisons, mais peuvent être chinoises, japonaises ou coréennes, par exemple :


.element {
  width:200px;
  height:200px;
  --黑色: #000;
  color:#fff;
  background-color: var(--黑色);
}
Copier après la connexion
Syntaxe complète des variables CSS :

La syntaxe complète utilisée par les variables CSS est :
var( [, ]? ), en chinois c'est : var( <自定义属性名> [, <默认值 ]? ), c'est-à-dire que si nous ne définissons pas de nom de variable, alors la valeur suivante sera utilisée comme valeur d'attribut par défaut. est le suivant :


Le résultat obtenu est bien entendu le fond de la valeur de la couleur suivante.
.element {
    background-color: var(--new-bg-color,#EE0000);
}
Copier après la connexion

Regardons ce qui se passera si le nom de la variable est illégal. Regardez l'exemple suivant :


Excusez-moi, pour cela. time Quelle est la couleur d’arrière-plan ?
body {
  --color: 20px;
  background-color: #369;
  background-color: var(--color, #cd0000);
}
Copier après la connexion

    A. transparent
  • B. 20px
  • C. 🎜>
  • D. #cd0000

  • La réponse est :

Variable CSS, si Il s'avère que la valeur de la variable est illégale.Par exemple, la couleur d'arrière-plan ci-dessus ne peut évidemment pas être de 20 pixels, donc la valeur par défaut de la couleur d'arrière-plan, qui est la valeur par défaut, est utilisée à la place.Par conséquent, le CSS ci-dessus est équivalent à : A. transparent

Application des variables CSS dans js

Regardez l'exemple suivant, code html :
body {
    --color: 20px;
    background-color: #369;
    background-color: transparent;
}
Copier après la connexion

code css :

<p id="jsDom">这是一段文字</p>
Copier après la connexion

code js :

#jsDom {
    --my-varwidth: 200px;
    background-color: #000;
    color:#fff;
    width:var(--my-varwidth);
    height:200px;
}
Copier après la connexion

Quoi si le style est écrit entre les lignes ? Procédez ensuite comme suit :
code html :

var element = document.getElementById(&#39;jsDom&#39;);var curWidth = getComputedStyle(element).getPropertyValue("--my-varwidth");
console.log(curWidth); //200px//设置过后该DOM元素的宽度变为了300pxelement.style.setProperty("--my-varwidth", &#39;300px&#39;);
Copier après la connexion


code js :

<p id="jsDom" style="--my-varwidth:400px;width:var(--my-varwidth);">这是一段文字</p>
Copier après la connexion

Compatibilité du navigateur

La compatibilité du navigateur est comme indiqué dans la figure :
var element = document.getElementById(&#39;jsDom&#39;);var curWidth = element.style.getPropertyValue("--my-varwidth");
console.log(curWidth); //400px
Copier après la connexion

Pour l'instant, IE11 ne prend pas en charge cette variable CSS.

Cela dit, j'estime que cette variable CSS est également très puissante. Alors par rapport au préprocesseur, laquelle pensez-vous est la meilleure ? Parlons des inconvénients des préprocesseurs.

Inconvénients du préprocesseur

Les variables du préprocesseur ne sont pas actives

Peut-être surprenant pour les débutants, la limitation la plus courante du préprocesseur est que Sass ne peut pas être utilisé dans les médias. Définir des variables dans la requête ou utiliser @étendre.

Le code ci-dessus sera compilé en :

$gutter: 1em;
@media (min-width: 30em) {
     $gutter: 2em; 
} 
 .Container { 
     padding: $gutter; 
 }
Copier après la connexion

Comme le montre le Au-dessus des résultats, les blocs de demandes de renseignements des médias sont ignorés et les affectations de variables sont ignorées.

Comme il n'y a aucun moyen de modifier les variables sur la base des règles @media correspondantes, la seule option est d'attribuer une variable unique à chaque requête multimédia et d'écrire chaque variation individuellement.
.Container { 
     padding: 1em;
 }
Copier après la connexion

Les variables du préprocesseur ne peuvent pas être mises en cascade

Chaque fois que des variables sont utilisées, des problèmes de portée surviennent inévitablement. Cette variable doit-elle être définie comme variable globale ? Doit-il être limité à des fichiers ou des modules ? Doit-il être limité aux blocs ?

Étant donné que le but ultime du CSS est d'ajouter des styles au HTML, il s'avère qu'il existe un autre moyen efficace de définir la portée des variables : les éléments DOM. Mais comme les préprocesseurs ne s'exécutent pas dans le navigateur et ne peuvent pas voir le balisage, ils ne peuvent pas le faire.

Supposons qu'il existe un site Web. Pour les utilisateurs qui préfèrent un texte plus grand, ajoutez la classe

<🎜 au

<html>. élément.>. Lorsque cette classe est définie, des affectations de variables $font-size plus grandes doivent être appliquées : user-setting-large-text

$font-size: 1em;
.user-setting-large-text {
    $font-size: 1.5em;
} body { 
    font-size: $font-size; 
}
Copier après la connexion

但同样,就像上面的媒体块示例,Sass完全忽略了该变量的赋值,这意味着这是不可能发生的。编译后的代码如下:


body { 
    font-size: 1em;
}
Copier après la connexion

预处理器变量不继承

虽然继承严格说来是级联的一部分,之所以把它单独分出来讲,是因为多次想调用这个特性却不得。

假设一种情况,要在DOM元素上基于其父元素应用的颜色而设置样式:


.alert {
    background-color: lightyellow;
}.alert.info {
    background-color: lightblue;
}.alert.error {
    background-color: orangered;
}.alert button {
    border-color: darken(background-color, 25%);
}
Copier après la connexion

上面的代码并不是有效的Sass(或CSS),但你应该明白它想达到什么目的。

最后一句声明试图在

Étiquettes associées:
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