Mam stylów .less z następującymi konstruktem:Jaka jest prawidłowa składnia interpolacji zmiennej .less?
@width:600;
.some-style
{
width:@{width}px;
}
a to daje następujący błąd:
Expected '}' on line x in file '..\styles.less'
muszę te szelki, bo trzeba odróżnić zmienną z po sufiksie px
nie działa, ponieważ wtedy szuka zmiennej o nazwie widthpx
). I nie mogę użyć spacji, ponieważ 600 px
nie jest prawidłowym css. Używanie nawiasów zamiast nawiasów klamrowych również nie działa.
Co ja tu robię źle?
Aktualizacja: Zainstalowałem najnowszą wersję .less z Package Manager, a teraz to działa trochę lepiej, ale z fatalnym wadę:
width:@(width)px; <--note the parentheses
kompiluje teraz, ale emituje ten CSS:
600 px <--note the space, which is invalid CSS, thus useless.
rozwiązać: Scotts wskazał mi do roztworu. Oprócz swoich dwóch metod wygląda na to, że kompilator może wykonywać matematykę na łańcuchu. Tak to działa:
@width:600px;
.some-style
{
width:@width/2; <--correctly emits "300px"
}
Powodem jest to, że mogę wykonywać matematykę z jednostkami. Na przykład chcę zrobić szerokość: @ {szerokość/2} px. Ale właśnie sprawdziłem i wygląda na to, że kompilator faktycznie to rozumie. Jeśli zmienię oryginalną definicję na @width: 600px, a następnie ustawię styl na szerokość: @width/2, kompilator poprawnie wyemituje 300px. Dla mnie jest to sprzeczne z intuicją, że matematyka jest wykonywana na ciąg 600px zamiast na numer 600, ale rozwiązuje mój problem. Czy mógłbyś zaktualizować swoją odpowiedź (lub dodać nową) tym rozwiązaniem, a ja to zaakceptuję?Powyższe rozwiązanie naprawdę nie jest tym, co rozwiązuje problem. –
@JoshuaFrank: Być może też cię pokonałem, zanim opublikowałeś komentarz. Najwyraźniej źle zrozumiałem twój powód, aby nie umieszczać jednostek na "szerokości". Zaktualizuję odpowiedź, aby wyjaśnić, dlaczego nie jest to "sprzeczne z intuicją", jak ci się wydaje. – ScottS