Vorschlag für CSS @when

Avatar of Chris Coyier
Chris Coyier am

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

CSS ist in letzter Zeit auf einem Höhenflug. Wieder einmal habe ich von einer brandneuen Sache gehört, die ich noch nie zuvor gesehen habe, und wieder einmal über Miriam: CSS-Bedingungen.

Es gibt bereits so etwas wie Logik in Media Queries. Tatsächlich ist eine Media Query bereits Logik.

@media (min-width: 600px) {
  /* WHEN this media query is true, do these styles. */
}

Und wenn Sie Stile haben möchten, die sich gegenseitig zu den obigen ausschließen, würden Sie zwei Media Queries schreiben

@media (min-width: 600px) {
  /* ... */ 
}
@media (max-width: 599px) {
  /* ... */
}

Das ist ein wenig... zappelig. Die Syntax ist in diesem neuen Vorschlag viel übersichtlicher

@when media(min-width: 600px) {
  /* ... */ 
}
@else {
  /* ... */ 
}

Es sieht so aus, als ob Sie mehrere Bedingungen mit and verknüpfen, einen Kaskadenlogikstapel mit mehreren @else-Anweisungen haben und nicht nur @media, sondern auch @supports verwenden können.

@when media(width >= 400px) and media(pointer: fine) and supports(display: flex) {
  /* A */
} @else supports(caret-color: pink) and supports(background: double-rainbow()) {
  /* B */
} @else {
  /* C */
}

Sieht für mich sehr logisch und praktisch aus!

Ich habe eine kleine Auseinandersetzung über die Namensgebung gesehen. @if könnte hier auch ein logischer Name sein. Aber Sass verwendet @if und es wäre für viele Entwickler super ärgerlich, wenn sie ihre gesamte Sass-Logik auf etwas Neues umstellen müssten oder wie auch immer das ausfallen würde. Sollte CSS einer beliebigen Präprozessorsprache nachgeben? Nein, aber Sass gibt es schon lange und ist super beliebt, und es gibt eine perfekt gute Alternative, warum also den Schmerz verursachen? In diesem Thread geht es nicht nur um Sass – einige Leute denken sowieso, dass @when ein besserer Name ist.