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
Metoda ucieczki mi pomógł, dziękuję – Huangism