CSS Umgebungsvariablen

Avatar of Chris Coyier
Chris Coyier am

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

Wir alle lernten die env()-Funktion in CSS kennen, als das ganze Drama um „The Notch“ und das iPhone X aufkam. Die Art und Weise, wie Apple uns half, Inhalte von diesen „unsicheren“ Bereichen fernzuhalten, war, uns im Wesentlichen hartkodierte Variablen zur Verfügung zu stellen, die wir verwenden konnten.

padding: 
  env(safe-area-inset-top) 
  env(safe-area-inset-right) 
  env(safe-area-inset-bottom) 
  env(safe-area-inset-left);

Äh, ok! Seltsam! Nun, neun Monate später ist ein „inoffizieller Entwurfsentwurf“ für env() gelandet. So funktionieren Spezifikationen, soweit ich das verstehe. Manchmal treiben Browserhersteller Dinge voran, die sie benötigen, und dann werden sie standardisiert. Es ist nicht immer so, dass man darauf wartet, dass Standardisierungsgremien Dinge erfinden und die Browserhersteller diese dann implementieren.

Sind Umgebungsvariablen etwas, worüber man sich freuen kann? Aber ja! In gewisser Weise sind sie wie eine eingeschränktere Version von CSS Custom Properties, aber das bedeutet, dass sie potenziell für *mehr Dinge* verwendet werden können.

Eric weist auch auf einige sehr beeindruckende frühe Überlegungen hin

PROBLEM 4 – Definieren Sie den vollständigen Satz von Stellen, an denen env() verwendet werden kann.

  • Sollte beispielsweise eine beliebige Untermenge der MQ-Syntax ersetzen können.
  • Sollte Selektoren ersetzen können, vielleicht?
  • Sollte es auf Regel-Ebene funktionieren, damit Sie beliebige Dinge in eine Regel einfügen können, wie z. B. die Wiederverwendung eines Deklarationsblocks?

Wahrscheinlich immer noch mit JavaScript veränderbar. Ich denke, der Hauptgrund, warum CSS Custom Properties *nicht* mit Media Queries, Selektoren und Ähnlichem funktionieren, ist, dass sie mit der Kaskade funktionieren, was zu einigen sehr seltsamen Endlosschleifenlogiken führt, bei denen es sinnvoll ist, dass CSS sich nicht einmischen möchte.

Wenn Sie sich für PostCSS interessieren, gibt es ein Plugin! Aber ich warne... die gleichen Probleme, die bei der Vorverarbeitung von CSS Custom Properties auftreten, gelten auch hier (außer dem ersten in diesem Artikel).