Breaking Change: Null Alpha Kanal

Vor Dart Sass 1.64.3 wurde in den JS- und Dart-APIs `null` als 1 behandelt, wenn es an den Konstruktor `SassColor` übergeben wurde. Dies ist nun veraltet. Benutzer sollten stattdessen explizit 1 oder `undefined` übergeben.

Sass arbeitet daran, die Unterstützung für das CSS Color Module Level 4 hinzuzufügen. Eine der Änderungen in diesem Modul ist die Idee von "fehlenden Komponenten": Wenn eine Farbkomponente wie `alpha` fehlt, wird sie größtenteils als 0 behandelt, aber wenn sie mit einer anderen Farbe interpoliert wird (wie z. B. in einem Farbverlauf oder einer Animation), nimmt sie automatisch den Wert der anderen Farbe an.

Wir benötigen eine Möglichkeit für Benutzer der JS- und Dart-APIs, fehlende Kanäle abzurufen und festzulegen, und `null` ist die naheliegendste Methode dafür. In den meisten Fällen ist dies kein Problem; Aufrufer, die undurchsichtige Farben erstellen möchten, lassen den Parameter `alpha` normalerweise einfach weg (oder übergeben `undefined` in JS). Wenn Aufrufer jedoch explizit `null` übergeben, wird dies schließlich als transparente Farbe und nicht als undurchsichtige Farbe behandelt.

Um das aktuelle Verhalten beizubehalten, müssen Sie nur explizit 1 übergeben, wenn `alpha` nicht gesetzt ist. In JS

new sass.SassColor({
  red: 102,
  green: 51,
  blue: 153,
  alpha: alpha ?? 1,
});

Und in Dart

sass.SassColor.rgb(102, 51, 153, alpha ?? 1);

💡 Lustige Tatsache

Die TypeScript-Typen für die Sass-API verbieten bereits die Übergabe von `null` als `alpha`; es darf nur abwesend, `undefined` oder eine `Number` sein. Aber vor Dart Sass 1.64.3 wurde, wenn Sie kein TypeScript verwendet haben und `null` übergeben haben, dies trotzdem als undurchsichtige Farbe behandelt.

ÜbergangszeitraumÜbergangszeitraum Permalink

Kompatibilität
Dart Sass
seit 1.64.3
LibSass
Ruby Sass

Zwischen Dart Sass 1.64.3 und der bevorstehenden Veröffentlichung der Unterstützung für CSS Colors Level 4 wird Dart Sass einen `null`-`alpha`-Wert weiterhin als undurchsichtige Farbe interpretieren. Es wird jedoch eine Veraltungswarnung ausgeben, um Autoren zu ermutigen, stattdessen explizit `alpha` 1 zu übergeben.