CSS At-Regeln
- 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.
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";
}
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.
CSS-Ausgabe
.print-only {
display: none;
}
@media print {
.print-only {
display: block;
}
}
@media@media Permalinks
- 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.
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.
SCSS-Syntax
$layout-breakpoint-small: 960px;
@media (min-width: $layout-breakpoint-small) {
.hide-extra-small {
display: none;
}
}
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.
SCSS-Syntax
@media (hover: hover) {
.button:hover {
border: 2px solid black;
@media (color) {
border-color: #036;
}
}
}
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.
SCSS-Syntax
@mixin sticky-position {
position: fixed;
@supports (position: sticky) {
position: sticky;
}
}
.banner {
@include sticky-position;
}
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.
SCSS-Syntax
@keyframes slide-in {
from {
margin-left: 100%;
width: 300%;
}
70% {
margin-left: 90%;
width: 150%;
}
to {
margin-left: 0%;
width: 100%;
}
}
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%;
}
}