2013-06-19 7 views
7

Mam funkcji niestandardowej w Sass, która pobiera wartość em, listwy jednostkę i tworzy wartość px:Dodanie dwóch wartości w zależności Sass tworzy podwójne wystąpienie „px”

@function stripAndPx($in){ 
    $stripped: $in/($in * 0 + 1); //strip unit 
    @return #{ (($stripped) * 16) + 'px'}; //convert to px 
} 

jestem następnie próbuje wziąć zmienną eM:

$em-variable: 1em; 

i dodać go do zmiennej piksela na podstawie:

$px-variable: 20px; 

Przykład:

right: $px-variable + (stripAndPx($em-variable)); 

który tworzy ten wynik:

right: 20px16px; 

Oczekuję zarówno wartości należy dodać:

right: 36px;

+0

Dlaczego można oczekiwać, że będzie można dodać 20px do 1em i uzyskać 36px? Chociaż 16px to standardowy domyślny rozmiar czcionki w większości przeglądarek, użytkownicy mogą i będą zmieniać tę wartość, nigdy nie można założyć, że 1em = 16px. – cimmanon

+0

@cimmanon Mam to ustalone jako moja podstawowa wartość px – Yahreen

Odpowiedz

16

Twoja funkcja zwraca ciąg znaków, a nie liczba. Sass zakłada, że ​​chcesz je połączyć, ponieważ to wszystko, co może zrobić z łańcuchem i jakimkolwiek innym typem.

@function stripAndPx($in){ 
    $stripped: $in/($in * 0 + 1); //strip unit 
    @return (($stripped) * 16) * 1px; //convert to px 
} 
Powiązane problemy