征求意见:使用正斜杠作为 分隔符
2019年5月7日发布者:Natalie Weizenbaum
在 Sass 的早期历史中,决定使用/
作为除法运算符,因为这在(并且仍然是)跨编程语言中最常见的表示方式。/
字符在很少的纯CSS属性中使用,对于那些属性,它是一个可选的简写。因此,Sass 定义了一组启发式方法,用于定义何时将/
呈现为字面斜杠,以及何时将其视为运算符。
很长一段时间以来,这些启发式方法都运行得很好。然而,近年来,CSS 的新补充,例如CSS 网格和CSS 颜色级别 4,越来越多地使用/
作为分隔符。使用相同的字符来表示除法和斜杠分隔变得越来越令人烦恼,并且最终可能会变得难以维持。
因此,我们计划重新定义/
,使其仅作为分隔符。它不会创建未加引号的字符串(就像它在至少一个操作数不是数字时当前所做的那样),而是会创建一个具有新斜杠分隔符的列表。例如,1 / 2 / 3
将是一个包含三个元素的斜杠分隔列表。除法将改为写成函数,divide()
(或在新的模块系统中写成math.div()
)。
推出推出永久链接
这是一个对现有 Sass 语义的重大更改,因此我们将通过一个三阶段过程来推出它。
-
第一阶段不会引入任何重大更改。它将
- 添加一个
divide()
函数,其作用与今天的/
运算符完全相同,只是它会对任何非数字参数发出弃用警告。 - 将斜杠分隔列表添加到 Sass 的对象模型中,无需用于创建它们的字面语法。这将在稍后进行,因为否则它将是一个重大更改。
- 添加一个
slash-list()
函数,该函数将创建斜杠分隔列表。 - 对所有解释为除法的
/
操作发出弃用警告。
- 添加一个
-
第二阶段将是一个重大更改。它将
- 使
/
仅作为列表分隔符。 - 使
divide()
对非数字参数抛出错误。 - 弃用
slash-list()
函数,因为它现在将是多余的。
- 使
-
第三阶段将只删除
slash-list()
函数。这不是优先事项,并将推迟到下一个主要版本发布。
提供反馈提供反馈永久链接
如果您想详细了解提议的行为将如何工作,请转到 Sass 语言存储库并阅读完整的提案。您可以跳过“背景”和“摘要”部分,因为它们已包含在上面。但请注意,它是作为规范编写的;它非常适合了解边缘情况的确切工作方式,但不像上面引用的部分那样具有对话性。
如果您对所写提案有任何问题,或者它没有涵盖对您很重要的用例,请在 Sass 语言问题跟踪器中提出。在我们将提案标记为“已接受”并进入实现阶段之前,我们将至少保留两周的时间供大家讨论。
但请注意,虽然我们欢迎社区反馈,但 Sass 的设计最终掌握在语言团队手中。我们绝对会考虑提出意见的用户及其用例,但我们也有责任考虑所有 Sass 新手或甚至CSS 新手,他们还不知道要阅读博客或在问题跟踪器中发表评论。请记住,我们谨慎的决策使 Sass 成为今天的样子,如果您对我们做出的决定不满意,请耐心等待。