2013-06-19 34 views
7

我在薩斯自定義函數,它接受一個EM值,剝離單位,並創建一個像素值的2倍例如:在薩斯功能添加兩個值創建「PX」

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

我再嘗試採取EM變量:

$em-variable: 1em; 

並將它添加到一個基於像素的變量:

$px-variable: 20px; 

示例:

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

它創建這樣的輸出:

right: 20px16px; 

我期待這兩個值要添加:

right: 36px;

+0

爲什麼你希望能夠添加20px到1em和36px?雖然16px是大多數瀏覽器的標準默認字體大小,但用戶可以並將更改此值,但您永遠無法假定1em = 16px。 – cimmanon

+0

@cimmanon我將它建立爲我的基礎px值 – Yahreen

回答

16

你的函數返回一個字符串,而不是數量。 Sass假定你想連接它們,因爲這只是一個字符串和任何其他類型所能做的。

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