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 还支持用户定义片段。
语法验证和 Linting
支持 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 支持。通过将 css.customData 设置为遵循自定义数据格式的 JSON 文件列表,你可以增强 VS Code 对新 CSS 属性、at-规则、伪类和伪元素的理解。然后,VS Code 将为所提供的属性、at-规则、伪类和伪元素提供语言支持,例如完成和悬停信息。
你可以在 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.js 发行版中包含 Node Package Manager (npm)。你需要打开一个新的终端(命令行提示符)才能让
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 任务
在与之前相同的文件夹中打开 VS Code(包含 styles.scss
/styles.less
和 .vscode
文件夹下的 tasks.json
),并在根目录创建 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();
})
);
这里发生了什么?
- 我们的
default
gulp 任务在启动时首先运行一次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 | 描述 | 默认值 |
---|---|---|
验证 | 启用或禁用所有验证 | true |
compatibleVendorPrefixes | 当使用带有供应商特定前缀的属性时(例如 -webkit-transition ),请确保也包含所有其他供应商特定属性,例如 -moz-transition 、-ms-transition 和 -o-transition |
忽略 |
供应商前缀 | 当使用带有供应商特定前缀的属性时,例如 -webkit-transition ,请确保如果存在,也包含标准属性,例如 transition |
警告 |
重复属性 | 在同一规则集中出现重复属性时发出警告 | 忽略 |
空规则 | 警告空规则集 | 警告 |
importStatement | 警告使用 import 语句,因为 import 语句是顺序加载的,这会对网页性能产生负面影响 |
忽略 |
盒模型 | 使用 padding 或 border 时不要使用 width 或 height |
忽略 |
通用选择器 | 使用通用选择器 * 时发出警告,因为它已知速度慢,应避免使用 |
忽略 |
零单位 | 当零带有单位时(例如 0em )发出警告,因为零不需要单位。 |
忽略 |
fontFace属性 | 在使用 @font-face 规则时,如果没有定义 src 和 font-family 属性,则发出警告 |
警告 |
十六进制颜色长度 | 当使用不包含三个或六个十六进制数字的十六进制数时发出警告 | 错误 |
颜色函数中的参数 | 颜色函数(例如 rgb )中参数数量无效时发出警告 |
错误 |
未知属性 | 使用未知属性时发出警告 | 警告 |
ieHack | 使用 IE hack *propertyName 或 _propertyName 时发出警告 |
忽略 |
未知供应商特定属性 | 使用未知供应商特定属性时发出警告 | 忽略 |
因显示而被忽略的属性 | 当属性因显示而被忽略时发出警告。例如,对于 display: inline ,width 、height 、margin-top 、margin-bottom 和 float 属性无效。 |
警告 |
重要 | 当使用 !important 时发出警告,因为它表明整个 CSS 的特异性已经失控,需要重构。 |
忽略 |
浮动 | 使用 float 时发出警告,因为浮动会导致脆弱的 CSS,如果布局的某个方面发生变化,很容易被破坏。 |
忽略 |
id选择器 | 当使用 ID 选择器 #id 时发出警告,因为选择器不应包含 ID,因为这些规则与 HTML 耦合过于紧密。 |
忽略 |
后续步骤
继续阅读以了解:
- 配置任务 - 深入了解任务,帮助您将 SCSS 和 Less 编译为 CSS。
- 基本编辑 - 了解功能强大的 VS Code 编辑器。
- 代码导航 - 快速浏览您的源代码。
- HTML - CSS 只是一个开始,VS Code 也对 HTML 提供非常好的支持。
常见问题
VS Code 提供颜色选择器吗?
是的,将鼠标悬停在 CSS 颜色引用上,就会显示颜色选择器。
是否支持基于缩进的 Sass 语法 (.sass)?
不,但 Marketplace 中有几个扩展支持 Sass 的缩进风格,例如,最初由 Robin Bentley 创建,现在由 Leonard Grosoli 维护的 Sass 扩展。