2013-06-19 26 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 
}