重大變更:Null Alpha 色板
在 Dart Sass 1.64.3 之前的版本中,在 JS 和 Dart API 中,如果將 null 傳遞給 SassColor 建構函式,它會被視為 1。現在已棄用此功能。建議使用者明確傳遞 1 或 undefined。
Sass 正在努力新增對 CSS 顏色模組 Level 4 的支援。此模組的其中一項變更是「缺少的組成部分」的概念:如果缺少顏色組成部分(例如 alpha),則大多數情況下會將其視為 0,但如果它與其他顏色進行插值(例如在漸層或動畫中),它將自動採用其他顏色的值。
我們需要一種方法讓 JS 和 Dart API 的使用者能夠存取和設定缺少的色板,而 null 是最自然的方法。在大多數情況下,這不是問題;打算建立不透明顏色的呼叫者通常只會省略 alpha 參數(或在 JS 中傳遞 undefined)。但是,如果呼叫者明確傳遞 null,最終會將其視為透明顏色,而不是不透明顏色。
要保留目前的行為,您只需要在 alpha 未設定時明確傳遞 1 即可。在 JS 中:
new sass.SassColor({
red: 102,
green: 51,
blue: 153,
alpha: alpha ?? 1,
});
在 Dart 中:
sass.SassColor.rgb(102, 51, 153, alpha ?? 1);
💡 小知識
Sass API 的 TypeScript 類型已經禁止將 null 作為 alpha 傳遞;它只允許省略、undefined 或 Number。但在 Dart Sass 1.64.3 之前,如果您沒有使用 TypeScript,並且您*確實*傳遞了 null,它仍然會被視為不透明顏色。
過渡期過渡期永久連結
- Dart Sass
- 自 1.64.3 版本起
- LibSass
- ✗
- Ruby Sass
- ✗
從 Dart Sass 1.64.3 版本到即將發佈的 CSS 顏色 Level 4 支援版本之間,Dart Sass 將繼續將 null 的 alpha 值解釋為不透明顏色。但是,它會發出棄用警告,鼓勵開發者明確地傳遞 alpha 值 1。