Heim > Web-Frontend > CSS-Tutorial > Hauptteil

Wie verwende ich Variablen in Eigenschaftsnamen in LESS: Dynamische Eigenschaften oder Interpolation von Eigenschaftsnamen?

Linda Hamilton
Freigeben: 2024-11-08 10:44:01
Original
735 Leute haben es durchsucht

How to Use Variables in Property Names in LESS: Dynamic Properties or Property Name Interpolation?

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

Bei der Arbeit mit LESS kann die Anpassung von CSS-Eigenschaftsnamen basierend auf dynamischen Werten eine Herausforderung sein . In dieser Frage werden die Einschränkungen und Problemumgehungen für die Replikation eines herstellerspezifischen CSS-Mixins untersucht, das dynamische Eigenschaften und Werte akzeptiert. In Sass würde ein solches Mixin die Interpolation von Eigenschaftsnamen nutzen.

Einschränkung in LESS:

Derzeit fehlt in LESS die integrierte Unterstützung für die dynamische Generierung von Eigenschaftsnamen. Dies macht es unmöglich, das Herstellerpräfix-Mixin direkt in LESS zu replizieren.

Problemumgehungen:

Trotz dieser Einschränkung bieten die folgenden Problemumgehungen alternative Methoden:

1. Dynamisch generierte Eigenschaften in Eigenschaftswerte einfügen:

Dynamische Eigenschaften und Werte in eine generische Eigenschaft wie „Anbieter“ einschließen und in den Wert einer anderen Eigenschaft einfügen.

Beispiel:

.vendors(@property, @value) {
  -inj: "~"@{property}: @{value}"";
}
Nach dem Login kopieren
.test {
  .vendors(transform, matrix(1, 0, 0, 1, 20, 20));
}
Nach dem Login kopieren

2. Fügen Sie dynamisch generierte Eigenschaften in den Namen der folgenden Klasse ein:

Erweitern Sie das Anbieter-Mixin-Konzept. Erstellen Sie mehrere Klassen, wobei die späteren Klassen Anbieterregeln in ihre Namen einfügen.

Beispiel:

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

.test(@nextclass) {
  .vendors(transform, "matrix(2, 0, 0, 2, 20, 20)");
  .vendors(transform-origin, "10px 10px", @inject);
  (~"{@{inject}} .@{nextclass}"): {};
}
Nach dem Login kopieren
.this-class {
  .test(next-class);
}
Nach dem Login kopieren

Aktualisierte Problemumgehung für LESS v1.4.0 :

@nl: `"\n\t"`;
.multi(@props, @vals, @i, @inj) {
  // extract property and value from lists
  @property: extract(@props, 1);
  @value: extract(@vals, 1);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie verwende ich Variablen in Eigenschaftsnamen in LESS: Dynamische Eigenschaften oder Interpolation von Eigenschaftsnamen?. 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