CSS At-Regeln

Kompatibilität (Namensinterpolation)
Dart Sass
seit 1.15.0
LibSass
Ruby Sass

LibSass, Ruby Sass und ältere Versionen von Dart Sass unterstützen keine Interpolation in At-Regel-Namen. Sie unterstützen Interpolation in Werten.

Sass unterstützt alle At-Regeln, die Teil von CSS selbst sind. Um flexibel und zukunftssicher gegenüber zukünftigen Versionen von CSS zu bleiben, bietet Sass standardmäßig allgemeine Unterstützung für fast alle At-Regeln. Eine CSS-At-Regel wird als @<name> <wert>, @<name> { ... } oder @<name> <wert> { ... } geschrieben. Der Name muss ein Bezeichner sein, und der Wert (falls vorhanden) kann so ziemlich alles sein. Sowohl der Name als auch der Wert können Interpolation enthalten.

Spielplatz

SCSS-Syntax

@namespace svg url(http://www.w3.org/2000/svg);

@font-face {
  font-family: "Open Sans";
  src: url("/fonts/OpenSans-Regular-webfont.woff2") format("woff2");
}

@counter-style thumbs {
  system: cyclic;
  symbols: "\1F44D";
}
Spielplatz

Sass-Syntax

@namespace svg url(http://www.w3.org/2000/svg)

@font-face
  font-family: "Open Sans"
  src: url("/fonts/OpenSans-Regular-webfont.woff2") format("woff2")

@counter-style thumbs
  system: cyclic
  symbols: "\1F44D"


CSS-Ausgabe

@charset "UTF-8";
@namespace svg url(http://www.w3.org/2000/svg);
@font-face {
  font-family: "Open Sans";
  src: url("/fonts/OpenSans-Regular-webfont.woff2") format("woff2");
}
@counter-style thumbs {
  system: cyclic;
  symbols: "👍";
}

Wenn eine CSS-At-Regel innerhalb einer Stilregel verschachtelt ist, tauschen die beiden automatisch ihre Positionen, sodass die At-Regel auf der obersten Ebene der CSS-Ausgabe steht und die Stilregel darin enthalten ist. Dies erleichtert das Hinzufügen von bedingten Stilen, ohne den Selektor der Stilregel neu schreiben zu müssen.

Spielplatz

SCSS-Syntax

.print-only {
  display: none;

  @media print { display: block; }
}



Spielplatz

Sass-Syntax

.print-only
  display: none

  @media print
    display: block



CSS-Ausgabe

.print-only {
  display: none;
}
@media print {
  .print-only {
    display: block;
  }
}

@media@media Permalinks

Kompatibilität (Bereichssyntax)
Dart Sass
seit 1.11.0
LibSass
Ruby Sass
seit 3.7.0

LibSass und ältere Versionen von Dart Sass und Ruby Sass unterstützen keine Media-Abfragen mit Merkmalen, die in einem Bereichskontext geschrieben sind. Sie unterstützen andere Standard-Media- Abfragen.

Spielplatz

SCSS-Syntax

@media (width <= 700px) {
  body {
    background: green;
  }
}
Spielplatz

Sass-Syntax

@media (width <= 700px)
  body
    background: green


CSS-Ausgabe

@media (width <= 700px) {
  body {
    background: green;
  }
}

Die @media-Regel erledigt all das und noch mehr. Neben der Zulassung von Interpolation erlaubt sie die direkte Verwendung von SassScript-Ausdrücken in den Merkmals- Abfragen.

Spielplatz

SCSS-Syntax

$layout-breakpoint-small: 960px;

@media (min-width: $layout-breakpoint-small) {
  .hide-extra-small {
    display: none;
  }
}
Spielplatz

Sass-Syntax

$layout-breakpoint-small: 960px

@media (min-width: $layout-breakpoint-small)
  .hide-extra-small
    display: none


CSS-Ausgabe

@media (min-width: 960px) {
  .hide-extra-small {
    display: none;
  }
}


Wenn möglich, wird Sass auch verschachtelte Media-Abfragen zusammenführen, um die Unterstützung für Browser zu erleichtern, die verschachtelte @media-Regeln noch nicht nativ unterstützen.

Spielplatz

SCSS-Syntax

@media (hover: hover) {
  .button:hover {
    border: 2px solid black;

    @media (color) {
      border-color: #036;
    }
  }
}

Spielplatz

Sass-Syntax

@media (hover: hover)
  .button:hover
    border: 2px solid black

    @media (color)
      border-color: #036




CSS-Ausgabe

@media (hover: hover) {
  .button:hover {
    border: 2px solid black;
  }
}
@media (hover: hover) and (color) {
  .button:hover {
    border-color: #036;
  }
}

@supports@supports Permalinks

Die @supports-Regel erlaubt ebenfalls die Verwendung von SassScript-Ausdrücken in den Deklarations- Abfragen.

Spielplatz

SCSS-Syntax

@mixin sticky-position {
  position: fixed;
  @supports (position: sticky) {
    position: sticky;
  }
}

.banner {
  @include sticky-position;
}
Spielplatz

Sass-Syntax

@mixin sticky-position
  position: fixed
  @supports (position: sticky)
    position: sticky



.banner
  @include sticky-position

CSS-Ausgabe

.banner {
  position: fixed;
}
@supports (position: sticky) {
  .banner {
    position: sticky;
  }
}


@keyframes@keyframes Permalinks

Die @keyframes-Regel funktioniert wie eine allgemeine At-Regel, außer dass ihre Kindregeln gültige Keyframe-Regeln (<number>%, from oder to) und keine normalen Selektoren sein müssen.

Spielplatz

SCSS-Syntax

@keyframes slide-in {
  from {
    margin-left: 100%;
    width: 300%;
  }

  70% {
    margin-left: 90%;
    width: 150%;
  }

  to {
    margin-left: 0%;
    width: 100%;
  }
}
Spielplatz

Sass-Syntax

@keyframes slide-in
  from
    margin-left: 100%
    width: 300%


  70%
    margin-left: 90%
    width: 150%


  to
    margin-left: 0%
    width: 100%


CSS-Ausgabe

@keyframes slide-in {
  from {
    margin-left: 100%;
    width: 300%;
  }
  70% {
    margin-left: 90%;
    width: 150%;
  }
  to {
    margin-left: 0%;
    width: 100%;
  }
}