2011-12-15 13 views
7

Podaję rozmiary czcionek w Ems, co oznacza, że ​​są względne w stosunku do kontenera nadrzędnego. Mam kilka elementów podrzędnych i nie chcę powtarzać rozmiaru nadrzędnego za każdym razem, gdy wykonuję obliczenia. Tak mam:Interpretacja ciągów LESS

@articleFontSize: 21/16; 

Jeżeli dalej używam:

font-size: @articleFontSizeem; 

jak można się spodziewać, mam 'zmienna @articleFontSizeem jest niezdefiniowana'.

Gdybym interpolacji go:

font-size: @{articleFontSize}em; 

następnie ponownie odmawia skompilować, a ja po prostu zwykły „błąd składni”.

font-size: @articleFontSize~"em"; 

To kompiluje - ale na wyjściu mam kod jak:

font-size: 1.3125 em; 

znaczy to dodaje spację przed jednostkami, więc są one ignorowane przez przeglądarkę.

Używam LiveReload na komputerze Mac (2.0 beta 5), ​​który zgodnie z ustawieniami używa "System Ruby 1.8.7" do kompilacji.

AKTUALIZACJA ROZWIĄZANIA:

a. Dodaj zero prawidłowych jednostek:

font-size: 0em + @articleFontSize; 

b. (Mój wcześniejszy alternatywna metoda - za pomocą funkcji):

.rFont(@target, @context) { 
    @ratio: @target/@context; 
    font-size: ~"@{ratio}em"; 
} 

wywołany z:

.rFont(11,@articleFontSize); 

wyjściowego (poprawne, nota nr niepotrzebne spacje):

font-size: 0.7063571428571428em; 

nie spodziewałem umieszczając @ {ratio} wewnątrz tyldy + cytaty, aby nadal go rozwijać. Ale to działa (prawie nic innego nie robi.)

To pytanie pomogło: concatenate values in less (css) without a space

+0

Metoda ucieczki mi pomógł, dziękuję – Huangism

Odpowiedz

11

Spróbuj

font-size: 0em + @articleFontSize; 
+0

Geniusz! Działa doskonale, dziękuję. –

+7

piękny hack, ale już go nie potrzebujesz, ponieważ możesz napisać 'font-size: unit (@articleFontSize, em);' – TKrugg

1

można umieścić je w zmiennej articleFontSize? Na przykład:

@articleFontSize: 21/16em; 

A jeśli to nie zadziała może:

@articleFontSize: (21/16)em; 
+0

Tak, można. Poprzednio to wykluczyłem, ale wygląda na to, że moja logika była zła - powinienem naprawdę ustawić: –

+0

(druga próba) Musiałbym ustawić początkowy rozmiar na "21" (bez formuły lub jednostek), więc może później: rozmiar czcionki: 12/@ articleFontSize i wyrazić go Ems. (Gdybym napisał to bez LESS, musiałbym zmienić 12/16em na 12/21em, żeby uzyskać odpowiedni rozmiar, jeśli rozumiesz, co mam na myśli.) Może lepiej będzie, jeśli wstawię to ręcznie. .. –

+0

@articleFontSize: (21/@ articleFontSize) em; Nawiasy też nie działają - sprawdza się, ale znowu istnieje przestrzeń zewnętrzna * niezależnie od tego, czy używasz nazwy zmiennej z zaledwie 21/16 itd. Nie dostaję się, skąd przestrzeń pochodzi ... –

Powiązane problemy