CSS Правила-атрибуты
- Dart Sass
- с 1.15.0
- LibSass
- ✗
- Ruby Sass
- ✗
LibSass, Ruby Sass и более старые версии Dart Sass не поддерживают вставку в именах правил-атрибутов. Они поддерживают вставку в значениях.
Sass поддерживает все правила-атрибуты, которые являются частью стандартного CSS. Чтобы оставаться гибким и совместимым с будущими версиями CSS, Sass имеет общую поддержку, которая по умолчанию охватывает почти все правила-атрибуты. Правило-атрибут CSS записывается @<name> <value>, @<name> { ... } или @<name> <value> { ... }. Имя должно быть идентификатором, а значение (если оно существует) может быть практически чем угодно. И имя, и значение могут содержать вставку.
@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
@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 */
@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: "👍";
}Если правило-атрибут CSS вложен в правило стиля, эти два правила автоматически меняют свои позиции, так что правило-атрибут оказывается на верхнем уровне выходных данных CSS, а правило стиля находится внутри него. Это упрощает добавление условного форматирования, не переписывая селектор правила стиля.
.print-only {
display: none;
@media print { display: block; }
}// SASS
.print-only
display: none
@media print
display: block/* CSS */
.print-only {
display: none;
}
@media print {
.print-only {
display: block;
}
}
@media
- Dart Sass
- с 1.11.0
- LibSass
- ✗
- Ruby Sass
- с 3.7.0
LibSass и более старые версии Dart Sass и Ruby Sass не поддерживают запросы к среде с диапазонами, написанными в диапазоне контекста. Они поддерживают другие стандартные запросы к среде.
@media (width <= 700px) {
body {
background: green;
}
}// SASS
@media (width <= 700px)
body
background: green/* CSS */
@media (width <= 700px) {
body {
background: green;
}
}Правило @media делает всё вышеперечисленное и многое другое. Помимо поддержки вставки, оно позволяет использовать выражения SassScript непосредственно в запросах к свойствам среды.
$layout-breakpoint-small: 960px;
@media (min-width: $layout-breakpoint-small) {
.hide-extra-small {
display: none;
}
}// SASS
$layout-breakpoint-small: 960px
@media (min-width: $layout-breakpoint-small)
.hide-extra-small
display: none/* CSS */
@media (min-width: 960px) {
.hide-extra-small {
display: none;
}
}Когда это возможно, Sass также будет объединять запросы к среде, которые вложены друг в друга, чтобы упростить поддержку браузеров, которые ещё не поддерживают встроенные @media правила.
@media (hover: hover) {
.button:hover {
border: 2px solid black;
@media (color) {
border-color: #036;
}
}
}// SASS
@media (hover: hover)
.button:hover
border: 2px solid black
@media (color)
border-color: #036/* CSS */
@media (hover: hover) {
.button:hover {
border: 2px solid black;
}
}
@media (hover: hover) and (color) {
.button:hover {
border-color: #036;
}
}
@supports
Правило @supports также позволяет использовать выражения SassScript в запросах к объявлениям.
@mixin sticky-position {
position: fixed;
@supports (position: sticky) {
position: sticky;
}
}
.banner {
@include sticky-position;
}// SASS
@mixin sticky-position
position: fixed
@supports (position: sticky)
position: sticky
.banner
@include sticky-position/* CSS */
.banner {
position: fixed;
}
@supports (position: sticky) {
.banner {
position: sticky;
}
}
@keyframes
Правило @keyframes работает так же, как и обычное правило-атрибут, за исключением того, что его дочерние правила должны быть допустимыми правилами ключевых кадров (<number>%, from или to), а не обычными селекторами.
@keyframes slide-in {
from {
margin-left: 100%;
width: 300%;
}
70% {
margin-left: 90%;
width: 150%;
}
to {
margin-left: 0%;
width: 100%;
}
}// SASS
@keyframes slide-in
from
margin-left: 100%
width: 300%
70%
margin-left: 90%
width: 150%
to
margin-left: 0%
width: 100%/* CSS */
@keyframes slide-in {
from {
margin-left: 100%;
width: 300%;
}
70% {
margin-left: 90%;
width: 150%;
}
to {
margin-left: 0%;
width: 100%;
}
}
© 2006–2025 the Sass team, and numerous contributors
Licensed under the MIT License.
https://sass-lang.com/documentation/at-rules/css