LibSass、Ruby Sass 和旧版本的 Dart Sass 不支持规则名称中的 interpolation。 他们确实支持值的插值。
Sass 支持属于 CSS 本身的所有 at 规则。 为了保持灵活性和与未来版本的 CSS 的向前兼容,Sass 具有默认涵盖几乎所有 @ 规则的一般支持。 CSS at 规则写为@<name> <value>
、@<name> { ... }
或@<name> <value> { ... }
。 名称必须是标识符,值(如果存在)几乎可以是任何东西。 名称和值都可以包含 interpolation。
scss
Scss
scss
@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 at 规则嵌套在样式规则中,这两个规则会自动交换位置,以便 at 规则位于 CSS 输出的顶层,而样式规则位于其中。 这使得添加条件样式变得容易,而无需重写样式规则的选择器。
scss
Scss
scss
.print-only {
display: none;
@media print { display: block; }
}
@media
LibSass 和旧版本的 Dart Sass 和 Ruby Sass 不支持具有在范围上下文中编写的功能的媒体查询。 他们确实支持其他标准媒体查询。
LibSass 和旧版本的 Dart Sass 和 Ruby Sass 不支持在 范围上下文 中编写的功能的媒体查询。 它们确实支持其他标准媒体查询。
scss
Scss
scss
@media
规则 可以完成上述所有工作,甚至更多。 除了允许插值外,它还允许直接在 功能查询。
scss
Scss
scss
$layout-breakpoint-small: 960px;
@media (min-width: $layout-breakpoint-small) {
.hide-extra-small {
display: none;
}
}
在可能的情况下,Sass 还将合并嵌套在彼此中的媒体查询,以便更轻松地支持尚未原生支持嵌套的 @media
规则的浏览器。
scss
Scss
scss
@supports
@supports
规则 还允许 SassScript 表达式 在声明查询中使用。
scss
Scss
scss
@mixin sticky-position {
position: fixed;
@supports (position: sticky) {
position: sticky;
}
}
.banner {
@include sticky-position;
}
@keyframes
@keyframes
规则 就像一般的 at 规则一样工作,除了它的子规则必须是有效的关键帧 规则(<number>%
、from
或 to
)而不是普通的选择器。
scss
Scss
scss
@keyframes slide-in {
from {
margin-left: 100%;
width: 300%;
}
70% {
margin-left: 90%;
width: 150%;
}
to {
margin-left: 0%;
width: 100%;
}
}