CSS、SCSS 和 Less
Visual Studio Code 内置支持编辑样式表 CSS .css、SCSS .scss 和 Less .less 文件。此外,您可以安装扩展以获得更多功能。
提示:单击上方的扩展图块可阅读描述和评论,以帮助您决定哪个扩展最适合您。请参阅 Marketplace 中的更多信息。
IntelliSense
VS Code 支持选择器、属性和值。使用 ⌃Space (Windows, Linux Ctrl+Space) 获取上下文特定的选项列表。

建议项包含广泛的文档,包括支持该属性的浏览器列表。要查看所选条目的完整描述文本,请使用 ⌃Space (Windows, Linux Ctrl+Space)。
语法着色和颜色预览
在您输入时,将显示语法高亮显示以及上下文中的颜色预览。

单击颜色预览将启动集成的颜色拾取器,该拾取器支持色相、饱和度和不透明度的配置。

提示:单击拾取器顶部的颜色字符串,可以在不同颜色模式之间切换。
您可以通过设置以下 设置 来隐藏 VS Code 的颜色预览
"editor.colorDecorators": false
如需仅为 css、Less 和 SCSS 禁用,请使用
"[css]": {
"editor.colorDecorators": false
}
折叠
您可以使用行号和行首之间装订线上的折叠图标折叠源代码区域。所有声明(例如规则声明)和源代码中的多行注释都可用作折叠区域。
此外,您可以使用以下区域标记来定义折叠区域:CSS/SCSS/Less 中的 /*#region*/ 和 /*#endregion*/ 或 SCSS/Less 中的 // #region 和 // #endregion。
如果您更喜欢为 CSS、Less 和 SCSS 切换到基于缩进的折叠,请使用
"[css]": {
"editor.foldingStrategy": "indentation"
},
Emmet 代码片段
Emmet 缩写支持内置于 VS Code 中,建议项与其他建议项和代码片段一起显示在编辑器自动完成列表中。
提示:请参阅 Emmet 速查表的 CSS 部分,了解有效的缩写。
VS Code 也支持 用户定义的代码片段。
语法验证和 Lint
支持 CSS 版本 <= 2.1,Sass 版本 <= 3.2 和 Less 版本 <= 2.3。
注意:您可以通过将相应的
.validate用户或工作区 设置设为 false 来禁用 VS Code 的默认 CSS、Sass 或 Less 验证。"css.validate": false
在文件中转到符号
您可以通过按 ⇧⌘O (Windows, Linux Ctrl+Shift+O) 快速导航到当前文件中相关的 CSS 符号。
悬停信息
将鼠标悬停在选择器或属性上将提供与该 CSS 规则匹配的 HTML 片段。

转到定义和查找引用
这支持同一文件中的 Sass 和 Less 变量。CSS 变量(根据 草案标准提案)也受支持。
支持 CSS、SCSS 和 Less 中 @import 和 url() 链接的跳转到定义。
CSS 自定义数据
您可以通过声明性的 自定义数据格式来扩展 VS Code 的 CSS 支持。通过设置
您可以从 vscode-custom-data 仓库中了解有关使用自定义数据的更多信息。
格式化
CSS 语言功能扩展还提供了一个格式化程序。该格式化程序适用于 CSS、LESS 和 SCSS。它由 JS Beautify 库实现,并带有以下设置
- css.format.enable- 启用/禁用默认 CSS 格式化程序。
- css.format.newlineBetweenRules- 在规则集之间用空行分隔。
- css.format.newlineBetweenSelectors- 在选择器之间用新行分隔。
- css.format.spaceAroundSelectorSeparator- 在选择器分隔符“>”、“+”、“~”周围确保有空格字符(例如
a > b)。
less 和 scss 也有相同的设置。
将 Sass 和 Less 转换为 CSS
VS Code 可以通过我们集成的 任务运行器与 Sass 和 Less 转译器集成。我们可以用它将 .scss 或 .less 文件转译为 .css 文件。让我们演练一下转译一个简单的 Sass/Less 文件。
步骤 1:安装 Sass 或 Less 转译器
对于本次演练,让我们使用 sass 或 less Node.js 模块。
注意:如果您尚未安装 Node.js 和 npm 包管理器,则需要先进行安装。请为您的平台安装 Node.js。Node 包管理器 (npm) 包含在 Node.js 发行版中。您需要打开一个新的终端(命令提示符),以便
npm位于您的 PATH 中。
npm install -g sass less
步骤 2:创建一个简单的 Sass 或 Less 文件
在空文件夹上打开 VS Code,创建一个 styles.scss 或 styles.less 文件。将以下代码放在该文件中
$padding: 6px;
nav {
ul {
margin: 0;
padding: $padding;
list-style: none;
}
li { display: inline-block; }
a {
display: block;
padding: $padding 12px;
text-decoration: none;
}
}
对于上述文件中的 Less 版本,只需将 $padding 更改为 @padding 即可。
注意:这是一个非常简单的示例,这就是为什么两种文件类型的源代码几乎相同。在更高级的场景中,语法和结构将大不相同。
步骤 3:创建 tasks.json
下一步是设置任务配置。为此,运行 终端 > 配置任务,然后单击 从模板创建 tasks.json 文件。在显示的对话框中,选择 其他。
这将会在工作区 .vscode 文件夹中创建一个示例 tasks.json 文件。文件的初始版本包含一个运行任意命令的示例。我们将修改该配置以转译 Sass/Less。
// Sass configuration
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "Sass Compile",
"type": "shell",
"command": "sass styles.scss styles.css",
"group": "build"
}
]
}
// Less configuration
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "Less Compile",
"type": "shell",
"command": "lessc styles.less styles.css",
"group": "build"
}
]
}
步骤 4:运行构建任务
由于这是文件中的唯一命令,您可以通过按 ⇧⌘B (Windows, Linux Ctrl+Shift+B) (运行构建任务) 来执行它。示例 Sass/Less 文件不应存在任何编译问题,因此运行任务后只会创建一个相应的 styles.css 文件。
由于在更复杂的环境中可能存在多个构建任务,因此在按下 ⇧⌘B (Windows, Linux Ctrl+Shift+B) (运行构建任务) 时,我们会提示您选择要执行的任务。此外,我们允许您扫描输出中的编译问题(错误和警告)。根据编译器,选择列表中适当的条目以扫描工具输出中的错误和警告。如果您不想扫描输出,请从显示的列表中选择 从不扫描构建输出。
此时,您应该会在文件列表中看到一个额外的文件 styles.css。
如果您想将该任务设置为默认构建任务,请从全局 终端 菜单运行 配置默认构建任务,然后在显示的列表中选择相应的 Sass 或 Less 任务。
注意:如果您的构建失败或看到类似“编译目录时必须指定输出目录”的错误消息,请确保
tasks.json中的文件名与磁盘上的文件名匹配。您始终可以通过在命令行中运行sass styles.scss styles.css来测试您的构建。
自动化 Sass/Less 编译
让我们更进一步,使用 VS Code 自动化 Sass/Less 编译。我们可以使用与之前相同的任务运行器集成来实现此目的,但需要进行一些修改。
步骤 1:安装 Gulp 和一些插件
我们将使用 Gulp 来创建一个任务,以自动化 Sass/Less 编译。我们还将使用 gulp-sass 插件使事情变得更简单。Less 插件是 gulp-less。
我们需要全局(-g 标志)和本地安装 gulp
npm install -g gulp
npm install gulp gulp-sass gulp-less
注意:
gulp-sass和gulp-less是 Sass 和 Lessc 模块的 Gulp 插件,我们之前使用过它们。您可以使用许多其他 Gulp Sass 和 Less 插件,以及 Grunt 的插件。
您可以通过在终端中输入 gulp -v 来测试您的 gulp 安装是否成功。您应该会看到全局(CLI)和本地安装的版本显示。
步骤 2:创建一个简单的 Gulp 任务
在包含 styles.scss/styles.less 并在 .vscode 文件夹下包含 tasks.json 的同一文件夹上打开 VS Code,然后在根目录下创建 gulpfile.js。
将以下代码放在 gulpfile.js 文件中
// Sass configuration
var gulp = require('gulp');
var sass = require('gulp-sass')(require('sass'));
gulp.task('sass', function(cb) {
gulp
.src('*.scss')
.pipe(sass())
.pipe(
gulp.dest(function(f) {
return f.base;
})
);
cb();
});
gulp.task(
'default',
gulp.series('sass', function(cb) {
gulp.watch('*.scss', gulp.series('sass'));
cb();
})
);
// Less configuration
var gulp = require('gulp');
var less = require('gulp-less');
gulp.task('less', function(cb) {
gulp
.src('*.less')
.pipe(less())
.pipe(
gulp.dest(function(f) {
return f.base;
})
);
cb();
});
gulp.task(
'default',
gulp.series('less', function(cb) {
gulp.watch('*.less', gulp.series('less'));
cb();
})
);
这里发生了什么?
- 我们的
defaultgulp 任务在启动时首先运行一次sass或less任务。 - 然后它会监视工作区根目录下任何 SCSS/Less 文件的更改,例如当前在 VS Code 中打开的文件夹。
- 它会获取已更改的 SCSS/Less 文件集,并将其通过我们各自的编译器(例如
gulp-sass、gulp-less)运行。 - 我们现在有了一组 CSS 文件,每个文件都以其原始 SCSS/Less 文件命名。然后我们将这些文件放在同一个目录中。
步骤 3:运行 gulp 默认任务
要完成与 VS Code 的任务集成,我们需要修改之前的任务配置以运行我们刚刚创建的默认 Gulp 任务。您可以删除 tasks.json 文件,或者仅保留 "version": "2.0.0" 属性并将其清空。现在,从全局 终端 菜单执行 运行任务。请注意,您会看到一个列出 gulp 文件中定义的任务的选取器。选择 gulp: default 以启动任务。我们允许您扫描输出中的编译问题。根据编译器,选择列表中适当的条目以扫描工具输出中的错误和警告。如果您不想扫描输出,请从显示的列表中选择 从不扫描构建输出。此时,如果您创建和/或修改 Less 或 SASS 文件,您将看到相应的 CSS 文件生成和/或在保存时反映更改。您还可以启用 自动保存以使事情更加流畅。
如果您想将 gulp: default 任务设置为按下 ⇧⌘B (Windows, Linux Ctrl+Shift+B) 时执行的默认构建任务,请从全局 终端 菜单运行 配置默认构建任务,然后在显示的列表中选择 gulp: default。
步骤 4:终止 gulp 默认任务
gulp: default 任务在后台运行并监视 Sass/Less 文件的更改。如果要停止该任务,可以使用全局 终端 菜单中的 终止任务。
自定义 CSS、SCSS 和 Less 设置
您可以将以下 lint 警告配置为 用户和工作区设置。
validate 设置允许您关闭内置验证。如果您更喜欢使用不同的 linter,可以这样做。
| ID | 描述 | 默认值 |
|---|---|---|
| css.validate | 启用或禁用所有 css 验证 | true |
| less.validate | 启用或禁用所有 less 验证 | true |
| scss.validate | 启用或禁用所有 scss 验证 | true |
要为 CSS 配置选项,请使用 css.lint. 作为 ID 的前缀;对于 SCSS 和 Less,请使用 scss.lint. 和 less.lint.。
如果希望启用 lint 检查,将设置设为 warning 或 error,使用 ignore 来禁用它。Lint 检查在您输入时执行。
| ID | 描述 | 默认值 |
|---|---|---|
| validate | 启用或禁用所有验证 | true |
| compatibleVendorPrefixes | 当使用带有特定于供应商的前缀的属性时(例如 -webkit-transition),请确保也包含所有其他特定于供应商的属性,例如 -moz-transition、-ms-transition 和 -o-transition |
ignore |
| vendorPrefix | 当使用带有特定于供应商的前缀的属性时,例如 -webkit-transition,请确保也包含标准属性(如果存在),例如 transition |
warning |
| duplicateProperties | 警告同一规则集中的重复属性 | ignore |
| emptyRules | 警告空规则集 | warning |
| importStatement | 警告使用 import 语句,因为导入语句是顺序加载的,这对网页性能有负面影响 |
ignore |
| boxModel | 使用 padding 或 border 时不要使用 width 或 height |
ignore |
| universalSelector | 警告使用通用选择器 *,因为它已知速度慢且应避免使用 |
ignore |
| zeroUnits | 警告带有单位的零,例如 0em,因为零不需要单位。 |
ignore |
| fontFaceProperties | 警告在没有定义 src 和 font-family 属性的情况下使用 @font-face 规则 |
warning |
| hexColorLength | 警告使用不包含三个或六个十六进制数的十六进制数 | error |
| argumentsInColorFunction | 警告颜色函数(例如 rgb)中的参数数量无效 |
error |
| unknownProperties | 警告使用未知属性 | warning |
| ieHack | 警告使用 IE hack *propertyName 或 _propertyName |
ignore |
| unknownVendorSpecificProperties | 警告使用未知的特定于供应商的属性 | ignore |
| propertyIgnoredDueToDisplay | 警告使用因显示而被忽略的属性。例如,对于 display: inline,width、height、margin-top、margin-bottom 和 float 属性无效。 |
warning |
| important | 警告使用 !important,因为它表明整个 CSS 的特异性已经失控,需要重构。 |
ignore |
| float | 警告使用 float,因为浮动会导致脆弱的 CSS,如果布局的某个方面发生变化,很容易被破坏。 |
ignore |
| idSelector | 警告使用 ID 选择器 #id,因为选择器不应包含 ID,因为这些规则与 HTML 耦合过紧。 |
ignore |
后续步骤
继续阅读以了解:
- 配置任务 - 深入了解任务,以帮助您将 SCSS 和 Less 转译为 CSS。
- 基本编辑 - 了解功能强大的 VS Code 编辑器。
- 代码导航 - 快速浏览您的源代码。
- HTML - CSS 只是开始,HTML 在 VS Code 中也得到了很好的支持。
常见问题
VS Code 提供颜色拾取器吗?
是的,将鼠标悬停在 CSS 颜色引用上,就会显示颜色拾取器。
是否支持基于缩进的 Sass 语法(.sass)?
不支持,但在 Marketplace 中有几个扩展支持 Sass 的缩进风格,例如最初由 Robin Bentley 创建、现由 Leonard Grosoli 维护的 Sass 扩展。