最近我一直在将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
),但如果我愿意放弃进行进一步计算的能力,我很想知道是否有不同(更干净)的方法。也许在上述问题中提到的方法(“插值”)对我有用?
底线:在SASS中,如何干净地将单位类型(例如
em
)附加到计算结果中?
1em
”是一种解决方法,但我更倾向于不使用它,并且在这个问题的上下文中,我并不关心能否进行进一步的计算。虽然您可能不同意,但我所问的问题的答案实际上是插值。 (鉴于插值不是那个其他问题的答案,我不明白它们如何成为重复问题...)。请考虑取消将其标记为重复。 - Jeroen