我最近一直在将我的 CSS 重构为 SASS 样式表。我正在使用 VS2012 的Mindscape Web Workbench 扩展,每次保存 SCSS 时都会重新生成 CSS。我从类似这样的代码开始:
/* Starting point: */
h1 { font-size: 1.5em; /* 24px ÷ 16px */ }
然后我尝试首先将其重构为:
/* Recfator: */
h1 { font-size: (24px / 16px)em; }
但不幸的是,这会产生:
/* Result: */
h1 { font-size: 1.5 em; } /* doesn't work, gives "1.5 em" */
注意我不想要的额外空间。我尝试了几种替代方案,这里有一些:
h1 { font-size: (24/16)em; } /* doesn't work, gives "1.5 em" */
h2 { font-size: 24 / 16em; } /* doesn't work, gives "24/16em" */
h3 { font-size: (24px / 16px) * 1em; } /* works but "* 1 em" feels unnecessary */
h4 { font-size: (24em) / 16; } /* works, but without "px" it's not
really conveying what I mean to say */
我也用变量尝试了这些变体(因为无论如何我都想要这些),但这并没有太大改变这种情况。为了使这个问题中的示例保持流畅,我省略了变量。但是,我很乐意接受依赖于使用变量的解决方案(以一种干净的方式)。
我已经浏览了有关 '/' 的相关 SASS 文档,并意识到这对 SASS 来说是一个艰难的文档,因为 '/' 字符已经在基本 CSS 中具有意义。无论哪种方式,我都希望有一个干净的解决方案。我在这里错过了什么吗?
PS。这篇博文确实提供了一种解决方案,使用用户定义的函数。不过,这似乎有点重,所以如果有符合我上述尝试的“更清洁”的解决方案,我很感兴趣。如果有人可以解释“功能方法”是更好(甚至唯一)的解决方案,那么我也会接受它作为答案。
PS。这个相关的问题似乎与同一件事有关,尽管人们特别想做进一步的计算。接受的答案是我的第三个解决方法(乘以1em
),但是如果我愿意放弃进行进一步计算的能力,我很想知道是否有不同的(更清洁的)方法。也许上述问题(“插值”)中提到的方法对我有用?
底线:如何干净地将单位类型(例如em
)附加到 SASS 中的计算结果中?