Maison > interface Web > tutoriel CSS > Comment puis-je utiliser des variables pour créer dynamiquement des noms de propriétés dans LESS ?

Comment puis-je utiliser des variables pour créer dynamiquement des noms de propriétés dans LESS ?

Barbara Streisand
Libérer: 2024-11-14 21:59:02
original
940 Les gens l'ont consulté

How can I use variables to dynamically create property names in LESS?

Utilisation de variables dans les noms de propriété dans LESS (propriétés dynamiques / interpolation de nom de propriété)

LESS ne prend actuellement pas en charge les propriétés insérées dynamiquement, malgré quelques discussions sur le sujet sur Débordement de pile.

Solution n° 1 : injecter des propriétés générées dynamiquement dans la valeur de propriété

Cette solution de contournement injecte des propriétés créées dynamiquement dans une valeur de propriété codée en dur :

.vendors(@property, @value, @pre: ect) {
  -inj:~"@{pre}; -webkit-@{property}: @{value}; -moz-@{property}: @{value}; -ms-@{property}: @{value}; -o-@{property}: @{value}; @{property}: @{value}";
}
Copier après la connexion

Solution n°2 : injecter des propriétés générées dynamiquement dans le nom de la classe suivante (LESS < 1.4.0)

Cette solution de contournement construit une classe virtuelle ou un ensemble de règles qui inclut les fournisseurs et construit récursivement la classe suivante :

.vendors(@property, @value, @rest:&quot;&quot;) {
  @inject:~&quot;@{rest} -webkit-@{property}: @{value}; -moz-@{property}: @{value}; -ms-@{property}: @{value}; -o-@{property}: @{value}; @{property}: @{value};&quot;;
}

.test(@nextclass){
  .vendors(transform, &quot;matrix(2,0,0,2,20,20)&quot;);
  .vendors(transform-origin,&quot;10px 10px&quot;, @inject);
  (~&quot;{@{inject}} .@{nextclass}&quot;){/*next class properties*/};
}
Copier après la connexion

Solution n°3 : injecter des propriétés générées dynamiquement dans le nom de la classe suivante (LESS 1.4.0)

Cette version utilise la récursivité pour surmonter les limitations de LESS 1.4.0 :

@nl: `"\n\t"`;

.multi(@props,@vals,@i,@inj) {
  @property: extract(@props, 1);
  @value: extract(@vals, 1);
  @inject:~"@{inj}@{nl}-webkit-@{property}: @{value};@{nl}-moz-@{property}: @{value};@{nl}-ms-@{property}: @{value};@{nl}-o-@{property}: @{value};@{nl}@{property}: @{value};";
}

.multi(@props,@vals,@i,@inj:"") when (@i > 0) {
  @property: extract(@props, @i);
  @value: extract(@vals, @i);
  @injnext:~"@{inj}@{nl}-webkit-@{property}: @{value};@{nl}-moz-@{property}: @{value};@{nl}-ms-@{property}: @{value};@{nl}-o-@{property}: @{value};@{nl}@{property}: @{value};";
  .multi(@props,@vals,(@i - 1),@injnext);
}

Dans les versions LESS 1.6 et supérieures, l'interpolation des noms de propriété est implémentée de manière native, donc aucune solution de contournement n'est nécessaire.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal