Sass 3.5 已 发布

发布于 2017 年 7 月 7 日,作者 Natalie Weizenbaum

我很高兴地宣布,我刚刚发布了 Sass 3.5 的稳定版本。此版本专注于与新的CSS 语法兼容,并为即将推出的模块系统以及与Dart Sass的兼容性奠定基础。

3.5 中的大多数主要功能已在候选发布版本中,您可以在这里阅读相关内容。但自那时起,还添加了一些其他更改。

  • Sass 现在支持::slotted() 伪元素,包括扩展其选择器 参数。

  • var() 函数 可以安全地传递给CSS 颜色函数 rgb()rgba()hsl()hsla()

  • 由 Sass 的颜色函数创建的透明颜色现在将写为 rgba(0, 0, 0, 0) 而不是 transparent,以解决 Internet Explorer 中的错误。在文档中写为 transparent 的颜色仍将按原样发出。

Dart Sass 兼容性Dart Sass 兼容性 永久链接

上个月我写了关于我们短期内保持 Ruby Sass 与 Dart Sass 兼容的计划。Sass 3.5 开始实施这些计划,通过添加对 Dart Sass 添加的一些小型行为扩展的支持。

  • @extend 一个出现在样式表中但无法统一的选择器不再是错误。扩展错误的目的是防止拼写错误,而这种情况在这种情况 下并没有发生。

  • 接受参数的伪选择器现在可以接受任何匹配CSS<declataion-value> 语法 的参数。这将为新的 选择器提供更好的向前兼容性。

  • 包含占位符选择器和非占位符的选择器(例如,:matches(.foo, %bar))将不再被消除。这与占位符的定义一致,占位符是一个与 任何内容都不匹配的选择器。

  • 现在您可以在缩进语法文件中更改缩进,只要它仍然定义一致的树 结构。

还有一些对 Ruby Sass 中不支持的功能的弃用。

  • 扩展复合选择器,如 @extend .foo.bar,已被弃用。这从未遵循扩展的既定语义:匹配扩展选择器的元素将被样式化为与扩展 选择器匹配。

    当您编写 h1 {@extend .a.b} 时,这应该意味着所有 h1 元素都被样式化为与 .a.b 匹配——也就是说,它们拥有 class="a b",这意味着它们将分别匹配 .a.b。但我们只扩展包含两者 .a.b 的选择器,这是 不正确的。

  • 颜色运算已被弃用。逐通道运算与颜色直观的理解不符。Sass 的颜色函数 套件是一种更简洁、更易于理解的动态操作颜色的方法 

  • 引用组合符 /foo/ 已被弃用,因为它已在CSS 规范中存在一段时间,并且很快将从 Chrome 中删除。

  • 旧式的 :name value 属性语法已被弃用。这种语法使用不广泛,并且不必要地与 CSS 不同。

LibSass 兼容性LibSass 兼容性 永久链接

LibSass,Sass 的 C++ 实现,正朝着与所有这些功能兼容的方向发展。它还没有完全实现,但我们决定不想将 3.5 版本的发布阻挡在 100% 兼容性上。LibSass 将在实现 这些功能时发布它们。

下一步下一步? 永久链接

在最紧迫的将来,我将休假几个月,因此不太可能进行大量的工作。一旦休假结束,我将专注于让 Dart Sass 达到完整的 1.0.0 版本,这意味着要花费大量时间使其 JavaScriptAPInode-sass 兼容。

就 Ruby Sass 而言,我将继续修复错误,并添加对CSS 功能的支持,因为浏览器开始支持它们。一旦 Dart Sass 1.0.0 发布,我将在 Ruby 和 Dart 中同时添加新功能,直到一年的支持期 结束。

但现在,运行 gem update sass 并享受 3.5!