从CSS
- Dart·Sass(Dart Sass)
- 从 1.15.0开始
- LibSass
- ✗
- rubySass
- ✗
兼容性(名称插值):
LibSass,Ruby Sass和较早版本的Dart Sass不支持规则名称中的插值。它们确实支持值的插值。
Sass支持CSS固有的所有规则。为了保持灵活性并与将来的CSS版本向前兼容,Sass提供了常规支持,默认情况下涵盖了几乎所有规则。一个CSS的规则写入@<name> <value>
,@<name> { ... }
或@<name> <value> { ... }
。该名称必须是一个标识符,并且值(如果存在)几乎可以是任何东西。名称和值都可以包含插值。
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";
}
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 输出
@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规则嵌套在样式规则中,则这两个规则会自动交换位置,以便该规则位于CSS输出的顶层,而样式规则位于其中。这使得添加条件样式变得容易,而不必重写样式规则的选择器。
SCSS 语法
.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永久链接@media
- Dart·Sass(Dart Sass)
- 从 1.11.0开始
- LibSass
- ✗
- rubySass
- 从 3.7.0开始
兼容性(范围语法):
LibSass和Dart Sass和Ruby Sass的较早版本不支持具有在范围内编写的功能的媒体查询。它们确实支持其他标准媒体查询。
该@media
规则可以完成上述所有操作。除了允许插值外,它还允许在特征查询中直接使用SassScript表达式。
SCSS 语法
$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
规则的浏览器。
SCSS 语法
@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表达式。
SCSS 语法
@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
该@keyframes
规则的工作原理就像一个一般的规则,不同之处在于它的孩子规则必须是有效的关键帧规则(<number>%
,from
,或to
),而不是正常的选择。
SCSS 语法
@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%;
}
}