我正在尝试关注响应式布局设计this tutorial,但使用SASS / SCSS作为我的基本规范语言。
为此,我定义了以下SCSS:
body {
font: 100%/1.5;
}
h1 {
$h1_size: 24;
font-size: ($h1_size / 16)em;
line-height:(28 / $h1_size)em;
margin-top: (24 / $h1_size)em;
}
不幸的是,sass
到CSS格式的输出如下所示:
h1 {
font-size: 1.5 em;
line-height: 1.167 em;
margin-top: 1 em;
}
- 将单位与空格分开。 Chrome拒绝这些值为无效,只有在我自己手动删除空格时才会使用它们。
有没有办法通过调整我的SCSS或将选项传递给sass
来解决此问题?
到目前为止,我已经尝试过:
font-size: ($h1_size / 16em)
)=> 语法错误 font-size: (($h1_size)em / 16)
=> font-size: 24 em/16;
这是我正在尝试修复的问题答案 0 :(得分:28)
您可以将em
推送到$h1_size
定义,这样您就可以简单地除以16,并在ems
中得到结果。
如果分区的两边都在em
,那么你的结果将是无单位的。如果需要,您可以轻松地乘以1em
以恢复您的单位。
h1 {
$h1_size: 24em;
font-size: ($h1_size / 16);
line-height:(28em / $h1_size);
margin-top: (24em / $h1_size * 1em);
}
乘以1em
也可以使您更接近原始示例作品。您通常可以保持单位无效,然后在您希望单位出现时只乘以1em
。这避免了我的第一个例子中的一些无意义的em
扩散:
h1 {
$h1_size: 24;
font-size: ($h1_size / 16 * 1em);
line-height:(28 / $h1_size);
margin-top: (24 / $h1_size * 1em);
}
哪种方式更有意义主要取决于您的输出主要是在一个单元中,还是各种不同的单元(包括没有单元)。
答案 1 :(得分:21)
您可以使用+
删除空格h1 {
$h1_size: 24;
font-size: ($h1_size / 16)+em;
line-height:(28 / $h1_size)+em;
margin-top: (24 / $h1_size)+em;
}
将输出。
h1 {
font-size: 1.5em;
line-height: 1.16667em;
margin-top: 1em; }
答案 2 :(得分:5)
你需要像这样使用字符串插值:#{$ variable} em
以下是参考:http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#interpolation_
答案 3 :(得分:1)
将em放入变量中,$h1_size: 24em;