Heim > Web-Frontend > CSS-Tutorial > Wie erreicht man die Interpolation von Eigenschaftsnamen in LESS?

Wie erreicht man die Interpolation von Eigenschaftsnamen in LESS?

Mary-Kate Olsen
Freigeben: 2024-11-08 13:08:02
Original
496 Leute haben es durchsucht

How to Achieve Property Name Interpolation in LESS?

Wie können wir dieses Verhalten in LESS mit den einzigartigen Funktionen wie e() und @{ } reproduzieren?

Variablen in Eigenschaftsnamen in LESS verwenden

In LESS wird die Interpolation von Eigenschaftsnamen nicht direkt unterstützt. Es gibt jedoch Problemumgehungen mithilfe parametrischer Mixins und Mustervergleich:

Problemumgehung 1: Eigenschaften in einen Wert einfügen

.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

Verwendung:

.test-class{
    .vendors(transform, matrix(1,0,0,1,20,20));
    .vendors(transform-origin,"10px 10px");
}
Nach dem Login kopieren

Problemumgehung 2: Einfügen Eigenschaften in den Klassennamen einfügen

Ab v1.3.3

.vendors(@property, @value, @rest:"") {
    @inject:~"@{rest} -webkit-@{property}: @{value}; -moz-@{property}: @{value}; -ms-@{property}: @{value}; -o-@{property}: @{value}; @{property}: @{value};";
}
Nach dem Login kopieren
.test(@nextclass){
    .vendors(transform, "matrix(2,0,0,2,20,20)");
    .vendors(transform-origin,"10px 10px", @inject);
    (~"{@{inject}} .@{nextclass}"){/*next class properties*/};
}
Nach dem Login kopieren

Verpacken Sie es in einer Klasse:

.this-class{
    .test(next-class);
}
Nach dem Login kopieren

Workaround 3: Rekursive Injektion (v1.4.0)

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

.multi(@props,@vals,1,@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);
}
Nach dem Login kopieren

Verwendung:

// properties and values for vendors
@properties: "transform-origin" "transform";
@values: "10px 10px" "matrix(2,0,0,2,20,20)";

.this-class {
    .multi(@properties,@values,2,@p);
    @inj: ~"{@{inject}`'\n'`} `'\n'`.next-class ";
    @{inj} {/**/}
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie erreicht man die Interpolation von Eigenschaftsnamen in LESS?. 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