我根据你目前正在查看的代码,为你整理一份 SCSS 快速入门清单。包括了代码中出现的核心用法!
📋 SCSS 小白快速入门清单
1. 变量定义 🎨
声明可复用的值,使用 $ 前缀。
// 定义
$color-primary: #1890ff;
$btn-prefix: ".ant-btn";
$ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1);
// 使用
color: $color-primary;
border-radius: 2px;
transition: all 0.3s $ease-in-out-cubic;
好处:修改一个地方,全局更新;代码更易维护
2. 嵌套选择器 📦
省去重复书写父选择器,提高代码可读性。
// SCSS
.ant-btn {
color: blue;
&:hover {
color: red; // & 代表父选择器
}
&-primary {
color: white; // 生成 .ant-btn-primary
}
> a {
text-decoration: none; // 子选择器
}
}
// 编译后的 CSS
.ant-btn { color: blue; }
.ant-btn:hover { color: red; }
.ant-btn-primary { color: white; }
.ant-btn > a { text-decoration: none; }
关键符号:
&= 代表当前选择器>= 直接子元素+= 相邻兄弟元素(空格) = 后代元素
3. Mixin(混合器) 🔧
复用一段样式代码,类似函数。
// 定义 Mixin
@mixin button-disabled($text-color: gray, $bg-color: #f5f5f5) {
color: $text-color;
background: $bg-color;
cursor: not-allowed;
opacity: 0.6;
}
// 使用 Mixin
.btn-danger[disabled] {
@include button-disabled(#999, #f0f0f0);
}
// 编译后 - 把 Mixin 的代码复制过来
.btn-danger[disabled] {
color: #999;
background: #f0f0f0;
cursor: not-allowed;
opacity: 0.6;
}
你代码中的例子(第 25-48 行):
@mixin disabled-state($color-text: $color-text-disabled) {
color: $color-text;
border-color: $color-border-disabled;
background: $color-bg-disabled;
}
@mixin innerA() {
> a:only-child {
color: currentColor;
}
}
// 使用
.ant-btn[disabled] { @include disabled-state(); }
4. 变量插值 #{}
在选择器、属性名或字符串中使用变量。
$btn-prefix: ".ant-btn";
$attr: "color";
// 在选择器中
#{$btn-prefix}-primary {
color: blue;
}
// 编译后: .ant-btn-primary { color: blue; }
// 在字符串中
content: '前缀: #{$btn-prefix}';
你代码中的例子(第 100 行):
$btn-prefix: ".ant-btn";
#{$btn-prefix} { // 等同于 .ant-btn {
color: black;
}
&#{$btn-prefix}-primary { // 等同于 .ant-btn.ant-btn-primary {
color: white;
}
5. 注释 💬
// 这是 SCSS 注释,编译后会被删除
/* 这是 CSS 注释,编译后会保留 */
/* stylelint-disable at-rule-empty-line-before */
// 这种用法可以禁用 linter 规则
6. 操作符 ➕
支持基本的数学运算和颜色运算。
$base-size: 16px;
.button {
width: $base-size * 2; // 32px
padding: $base-size / 4; // 4px
margin: $base-size + 8; // 24px
}
// 颜色运算(了解即可,实际用得不多)
$color: #ff0000;
$lighter: lighten($color, 10%); // 浅色版本
$darker: darken($color, 10%); // 深色版本
7. 函数 🔢
SCSS 内置函数处理颜色、长度等。
// 颜色函数
rgba(0, 0, 0, 0.25) // RGBA 颜色
lighten(#1890ff, 10%) // 浅化颜色
darken(#1890ff, 10%) // 深化颜色
// 长度函数
abs(-15px) // 绝对值
max(10px, 20px) // 最大值
min(10px, 20px) // 最小值
// 你代码中的例子
$ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1);
8. 继承 @extend(高级特性)
让一个选择器继承另一个选择器的样式。
.button {
padding: 10px;
border: 1px solid gray;
}
.button-primary {
@extend .button; // 继承 .button 的样式
color: white;
background: blue;
}
// 编译后
.button, .button-primary { padding: 10px; border: 1px solid gray; }
.button-primary { color: white; background: blue; }
9. 条件语句 @if(高级特性)
根据条件应用不同的样式。
$theme: "dark";
.header {
@if $theme == "dark" {
background: #333;
color: white;
} @else {
background: white;
color: #333;
}
}
10. 循环 @for/@each(高级特性)
生成重复的样式。
// @for 循环
@for $i from 1 through 3 {
.col-#{$i} {
width: (100% / 3) * $i;
}
}
// 生成: .col-1, .col-2, .col-3
// @each 循环
$sizes: sm, md, lg;
@each $size in $sizes {
.btn-#{$size} {
font-size: 14px;
}
}
📚 你当前代码中的用法对照表
| 用法 | 第几行 | 解释 |
|---|---|---|
| 变量定义 | 4-23 | $color-primary, $btn-prefix 等 |
| Mixin 定义 | 25-97 | @mixin disabled-state, @mixin innerA 等 |
| Mixin 使用 | 57, 73, 82 | @include innerA(), @include disabled-state() |
| 变量插值 | 100, 216 | #{$btn-prefix}, #{$btn-prefix}-primary |
| 嵌套选择器 | 100-159 | .ant-btn { ... &:hover { ... } } |
| 颜色函数 | 9, 54 | rgba(0, 0, 0, 0.25), cubic-bezier(...) |
| currentColor | 37 | CSS 关键字(上一个问题提过) |
🎯 初学者建议
优先学习顺序:
- ✅ 变量 - 最基础,必学
- ✅ 嵌套 - 写 SCSS 必用
- ✅ Mixin - 复用代码的利器
- ⚠️ 插值 - 偶尔需要
- 🔮 @extend, @if, @for - 进阶用法,先掌握前 3 个
实战建议:
- 用变量统一管理颜色、尺寸
- 用嵌套减少选择器重复
- 用 Mixin 复用常见样式组合
需要我详细讲解某个特性吗?😊