Ich habe einen .Weniger Sheet mit dem folgende Konstrukt bekommt:Was ist die richtige Syntax für .less variable Interpolation?
@width:600;
.some-style
{
width:@{width}px;
}
und das gibt die folgenden Fehler:
Expected '}' on line x in file '..\styles.less'
ich die Zahnspange benötigen, weil ich die Variable von der unterscheiden muß folgende px
Suffix (@widthpx
funktioniert nicht, weil dann nach einer Variablen namens widthpx
sucht). Und ich kann kein Leerzeichen verwenden, weil 600 px
nicht gültig CSS ist. Das Verwenden von Klammern anstelle von geschweiften Klammern funktioniert ebenfalls nicht.
Was mache ich hier falsch?
aktualisieren: Ich installierte die neueste Version von .Weniger aus dem Package Manager, und jetzt funktioniert es ein wenig besser, aber mit einem fatalen Fehler:
width:@(width)px; <--note the parentheses
kompiliert jetzt, sondern gibt diese CSS:
600 px <--note the space, which is invalid CSS, thus useless.
Gelöst: Scotts mich auf die Lösung gerichtet. Zusätzlich zu seinen beiden Methoden sieht es so aus, als ob der Compiler eine Mathematik für eine Zeichenkette ausführen kann. So funktioniert das:
@width:600px;
.some-style
{
width:@width/2; <--correctly emits "300px"
}
Der Grund ist, damit ich Mathe mit den Einheiten machen kann. Ich möchte zum Beispiel Breite: @ {Breite/2} px. Aber ich habe es nur überprüft und es sieht so aus, als ob der Compiler das wirklich versteht. Wenn ich meine ursprüngliche Definition in @width: 600px ändere und dann den Stil auf width: @width/2 einstelle, gibt der Compiler korrekt 300px aus. Für mich ist es kontraintuitiv, dass die Mathematik auf der Saite 600px statt auf der Zahl 600 gemacht wird, aber sie löst mein Problem. Könnten Sie bitte Ihre Antwort mit dieser Lösung aktualisieren (oder eine neue hinzufügen), und ich werde sie akzeptieren?Die obige Lösung ist wirklich nicht das, was das Problem löst. –
@JoshuaFrank: vielleicht hatte ich dich auch schon geschlagen, bevor du den Kommentar gepostet hast. Ich habe deinen Grund offensichtlich falsch verstanden, Einheiten nicht auf '@ width' zu setzen. Ich werde die Antwort aktualisieren, um zu erklären, warum dies nicht so kontraintuitiv ist, wie Sie es glauben. – ScottS