At-Правила CSS
- Dart Sass
- since 1.15.0
- LibSass
- ✗
- Ruby Sass
- ✗
LibSass, Ruby Sass и более старые версии Dart Sass не поддерживают интерполяцию в именах at-правил. Они поддерживают интерполяцию значений.
Sass поддерживает все at-правила, которые являются частью собственно CSS. Чтобы сохранить гибкость и совместимость с будущими версиями CSS, Sass имеет общую поддержку, которая по умолчанию охватывает почти все at-правила. At-правило CSS записывается как @<name> <value>
, @<name> { ... }
или @<name> <value> { ... }
. Имя должно быть идентификатором, а значение (если оно существует) может быть чем угодно. И имя, и значение могут содержать интерполяцию.
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 Output
@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";
}
Если at-правило CSS вложено в правило стиля, эти два правила автоматически меняются местами, так что at-правило находится на верхнем уровне вывода CSS, а правило стиля находится внутри него. Это упрощает добавление условного стиля без необходимости переписывать селектор правила стиля.
SCSS Syntax
.print-only {
display: none;
@media print { display: block; }
}
Sass Syntax
.print-only
display: none
@media print
display: block
CSS Output
.print-only {
display: none;
}
@media print {
.print-only {
display: block;
}
}
@media permalink@media
- Dart Sass
- since 1.11.0
- LibSass
- ✗
- Ruby Sass
- since 3.7.0
LibSass и более старые версии Dart Sass и Ruby Sass не поддерживают медиа-запросы с функциями, написанными в контекст диапазона. Они поддерживают другие стандартные медиа-запросы.
Правило @media
выполняет все вышеперечисленное и многое другое. Помимо возможности интерполяции, он позволяет использовать выражения SassScript непосредственно в запросы функций.
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 Output
@media (min-width: 960px) {
.hide-extra-small {
display: none;
}
}
По возможности Sass также объединяет вложенные друг в друга медиа-запросы, чтобы упростить поддержку браузеров, которые еще не поддерживают вложенные правила @media
.
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 Output
@media (hover: hover) {
.button:hover {
border: 2px solid black;
}
}
@media (hover: hover) and (color) {
.button:hover {
border-color: #036;
}
}
@supports permalink@supports
Правило @supports
также позволяет использовать выражения SassScript expressions в запросах объявления.
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 Output
.banner {
position: fixed;
}
@supports (position: sticky) {
.banner {
position: sticky;
}
}
@keyframes permalink@keyframes
Правило @keyframes
rule работает так же, как общее at-правило, за исключением того, что его дочерние правила должны быть действительными правилами ключевых кадров (<number>%
, from
или to
), а не обычными селекторами.
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 Output
@keyframes slide-in {
from {
margin-left: 100%;
width: 300%;
}
70% {
margin-left: 90%;
width: 150%;
}
to {
margin-left: 0%;
width: 100%;
}
}