0%

dart-sass 和 ruby-sass 的区别

sass 有多个版本,目前官方主推的是 dart-sass,因为 dart 在处理大型样式表的时候性能更佳。dart-sass 没有支持完整的 sass 语法功能。今天在使用 sass 的颜色运算的时候,发现 webpack 报错,一时摸不着头脑。搜索报错信息,也得不到什么相关信息。后来在 dart-sass 的 github 主页才发现原来 dart-sass 并不支持颜色的通道运算,以下是 dart-sass 与 ruby-sass 的主要不同点。

  • @extend 仅仅接收一个选择器,并且将其作为 selector-extend() 的第二个参数
1
2
3
4
5
6
7
8
9
10
11
12
13
.a {
x: y;
}
.b {
x: y;
}
.a.b {
x: y;
}

.c {
@extend .a.b;
}
  • 增加了对于 :has() 伪类的支持
  • 缩进语法 (sass) 更灵活,不再要求全部文档保持同样的缩进
  • 颜色不支持通道运算
  • 无单位的数字不再 == 有单位的数字,map 的 键值比对遵循同样的逻辑
  • rgba() and hsla() 的百分比单位只支持百分比的形式
1
2
3
4
.card{ color: rgba(255,255,255,0.5); }
should fail, but
.card{ color: rgba(255,255,255,50%); }
should pass
  • 给函数传递多于函数定义的参数数量会导致错误
  • 支持 :maches()
  • selector-unify() 的结果现在具有对称性
  • 只支持 UTF-8 格式的文档