Farbfunktionen ohne Komma in CSS

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Es gab in letzter Zeit ein paar virale Tweets dazu, einer von Adam Argyle und einer von Mathias Bynes. Das ist eine schöne Neuerung, die CSS etwas übersichtlicher macht. Zuvor benötigte jede einzelne Farbfunktion tatsächlich zwei Funktionen, eine für Transparenz und eine ohne, dies eliminiert diese Notwendigkeit und bringt die Syntax mehr im Einklang mit der CSS-Grammatik insgesamt.

Ich mache hier die Code-Blöcke aus Mathiases Tweet neu

/* Old Syntax */
rgb(0, 128, 255)

rgba(0, 128, 255, 0.5)

hsl(198, 38% 50%)

hsla(198, 28%, 50%, 0.5)
/* New Syntax */
rgb(0 128 255)

rgb(0 128 255 / 50%)

hsl(198deg 28% 50%)

hsl(198deg 28% 50% / 50%)

lab(56.29% -10.93 16.58 / 50%)

lch(56.29% 19.86 236.62 / 50%)

color(sRGB 0 0.50 1 / 50%)

Gedankenparty

  • Die Browserunterstützung ist ziemlich gut: alles außer IE 11.
  • Wenn Sie IE 11-Unterstützung benötigen, können Sie es vorverarbeiten (oder es nicht verwenden). PostCSSs preset-env macht das, ebenso wie das sehr spezifische Plugin postcss-color-rgb (seltsam, dass es HSL nicht auch macht).
  • Wenn es Ihnen nicht gefällt, müssen Sie es buchstäblich nie verwenden. Kein Browser wird jemals die Unterstützung für ein so wichtiges Feature wieder einstellen.
  • Der Grund für den Wechsel ist Muskelgedächtnis und konsistent aussehende Codebasen, da neue Farbfunktionen (z. B. lab, lch und color) *nur* diese neue Syntax unterstützen werden.
  • Es gibt ein seltsames Hybrid zwischen alt und neu. Sie können einen Opazitätswert an rgb() übergeben, und es funktioniert immer noch wie rgb(255, 0, 0, 0.5);.
  • Wenn Sie es in Sass benötigen (was anscheinend eine Qual ist zu unterstützen), gibt es einen seltsamen Workaround. Ich vermute, Sass wird es irgendwann unterstützen. Wenn sie es nicht können, ist dies die Art von Kritik, die Leute von Projekten wegtreibt.
  • Prettier, das sich mit der Bereinigung Ihres Codes in Bezug auf Abstände und Syntax beschäftigt, *könnte* hier eingreifen und die Syntax konvertieren, aber es wird nicht passieren (die Haltung von Prettier ist, das AST nicht zu ändern).
  • Ich stelle mir vor, dass DevTools Farben in diesem Format anzeigen wird, was die Akzeptanz fördern wird.
  • Denken Sie daran, dass selbst Hex-Code-Farben ein schickes neues Format haben.