Heim > Web-Frontend > CSS-Tutorial > Wie kann ich Variablen verwenden, um Eigenschaftsnamen in LESS dynamisch zu erstellen?

Wie kann ich Variablen verwenden, um Eigenschaftsnamen in LESS dynamisch zu erstellen?

Barbara Streisand
Freigeben: 2024-11-14 21:59:02
Original
920 Leute haben es durchsucht

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

Variablen in Eigenschaftsnamen in LESS verwenden (dynamische Eigenschaften/Interpolation von Eigenschaftsnamen)

LESS unterstützt derzeit keine dynamisch eingefügten Eigenschaften, trotz einiger Diskussionen zu diesem Thema Stapelüberlauf.

Problemumgehung Nr. 1: Dynamisch generierte Eigenschaften in den Eigenschaftswert einfügen

Diese Problemumgehung fügt dynamisch erstellte Eigenschaften in einen hartcodierten Eigenschaftswert ein:

.vendors(@property, @value, @pre: ect) {
  -inj:~"@{pre}; -webkit-@{property}: @{value}; -moz-@{property}: @{value}; -ms-@{property}: @{value}; -o-@{property}: @{value}; @{property}: @{value}";
}
Nach dem Login kopieren

Problemumgehung Nr. 2: Dynamisch generierte Eigenschaften in den Namen der folgenden Klasse einfügen (LESS < 1.4.0)

Diese Problemumgehung erstellt eine virtuelle Klasse oder einen Regelsatz, der Folgendes enthält die Anbieter und erstellt rekursiv die nächste Klasse:

.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*/};
}
Nach dem Login kopieren

Problemumgehung Nr. 3: Dynamisch generierte Eigenschaften in den Namen der folgenden Klasse einfügen (LESS 1.4.0)

Diese Version verwendet Rekursion, um Einschränkungen in LESS 1.4.0 zu überwinden:

@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);
}

In LESS-Versionen 1.6 und höher ist die Interpolation von Eigenschaftsnamen nativ implementiert, sodass keine Problemumgehungen erforderlich sind.

Das obige ist der detaillierte Inhalt vonWie kann ich Variablen verwenden, um Eigenschaftsnamen in LESS dynamisch zu erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage