样式规则
样式规则是 Sass 的基础,就像它们对于 CSS 一样。它们的工作方式也相同:使用选择器选择要设置样式的元素,然后声明属性以影响这些元素的外观。
SCSS 语法
.button {
padding: 3px 10px;
font-size: 12px;
border-radius: 3px;
border: 1px solid #e1e4e8;
}
Sass 语法
.button
padding: 3px 10px
font-size: 12px
border-radius: 3px
border: 1px solid #e1e4e8
CSS 输出
.button {
padding: 3px 10px;
font-size: 12px;
border-radius: 3px;
border: 1px solid #e1e4e8;
}
嵌套嵌套永久链接
Sass 希望让你的生活更轻松。与其反复重复相同的选择器,你可以将一个样式规则写在另一个样式规则中。Sass 会自动将外部规则的选择器与内部 规则的选择器组合在一起。
SCSS 语法
nav {
ul {
margin: 0;
padding: 0;
list-style: none;
}
li { display: inline-block; }
a {
display: block;
padding: 6px 12px;
text-decoration: none;
}
}
Sass 语法
nav
ul
margin: 0
padding: 0
list-style: none
li
display: inline-block
a
display: block
padding: 6px 12px
text-decoration: none
CSS 输出
nav ul {
margin: 0;
padding: 0;
list-style: none;
}
nav li {
display: inline-block;
}
nav a {
display: block;
padding: 6px 12px;
text-decoration: none;
}
⚠️ 注意!
嵌套规则非常有用,但它们也可能让你难以想象你实际生成的 CSS 有多少。嵌套越深,提供 CSS 所需的带宽就越大,浏览器渲染它所需的工作量就越大。让这些选择器 保持浅显!
选择器列表选择器列表永久链接
嵌套规则在处理选择器列表(即以逗号分隔的选择器)时非常巧妙。每个复杂选择器(逗号之间的选择器)单独嵌套,然后将它们组合回一个选择器 列表。
SCSS 语法
.alert, .warning {
ul, p {
margin-right: 0;
margin-left: 0;
padding-bottom: 0;
}
}
Sass 语法
.alert, .warning
ul, p
margin-right: 0
margin-left: 0
padding-bottom: 0
CSS 输出
.alert ul, .alert p, .warning ul, .warning p {
margin-right: 0;
margin-left: 0;
padding-bottom: 0;
}
选择器组合器选择器组合器永久链接
你还可以嵌套使用 组合器 的选择器。你可以将组合器放在外部选择器的末尾、内部选择器的开头,甚至单独放在 两者之间。
SCSS 语法
ul > {
li {
list-style-type: none;
}
}
h2 {
+ p {
border-top: 1px solid gray;
}
}
p {
~ {
span {
opacity: 0.8;
}
}
}
Sass 语法
ul >
li
list-style-type: none
h2
+ p
border-top: 1px solid gray
p
~
span
opacity: 0.8
CSS 输出
ul > li {
list-style-type: none;
}
h2 + p {
border-top: 1px solid gray;
}
p ~ span {
opacity: 0.8;
}
高级嵌套高级嵌套永久链接
如果你想对嵌套样式规则进行更多操作,而不仅仅是按顺序将它们组合在一起,并用后代组合器(即一个空格)将它们分隔开,Sass 可以满足你的需求。请参阅 父选择器文档 了解更多 详细信息。
插值插值永久链接
你可以使用 插值 将变量和函数调用等 表达式 中的值注入到你的选择器中。当你编写 混合 时,这特别有用,因为它允许你根据用户传递 的参数创建选择器。
SCSS 语法
@mixin define-emoji($name, $glyph) {
span.emoji-#{$name} {
font-family: IconFont;
font-variant: normal;
font-weight: normal;
content: $glyph;
}
}
@include define-emoji("women-holding-hands", "👭");
Sass 语法
@mixin define-emoji($name, $glyph)
span.emoji-#{$name}
font-family: IconFont
font-variant: normal
font-weight: normal
content: $glyph
@include define-emoji("women-holding-hands", "👭")
CSS 输出
@charset "UTF-8";
span.emoji-women-holding-hands {
font-family: IconFont;
font-variant: normal;
font-weight: normal;
content: "👭";
}
💡 有趣的事实
Sass 仅在解析插值之后才解析选择器。这意味着你可以安全地使用插值来生成选择器的任何部分,而不用担心它不会 解析。
你可以将插值与父选择器 &
、@at-root
规则和选择器函数结合使用,在动态生成选择器时发挥强大的作用。有关更多信息,请参阅父选择器 文档。