现已推出!阅读有关 10 月份新功能和修复的详细信息。

CSS、SCSS 和 Less

Visual Studio Code 内置支持编辑 CSS .css、SCSS .scss 和 Less .less 中的样式表。此外,您还可以安装扩展以获得更多功能。

提示:单击上面的扩展磁贴以阅读描述和评论,以确定哪个扩展最适合您。在 市场 中查看更多信息。

IntelliSense

VS Code 支持选择器、属性和值。使用 ⌃Space (Windows、Linux Ctrl+Space) 获取特定于上下文的选项列表。

IntelliSense in CSS

建议包含详尽的文档,包括支持该属性的浏览器列表。要查看所选条目的完整描述文本,请使用 ⌃Space (Windows、Linux Ctrl+Space)

语法着色和颜色预览

在您键入时,会进行语法突出显示,以及颜色在上下文中预览。

Syntax and color

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

Color picker in CSS

提示:您可以通过单击颜色选择器顶部的颜色字符串在不同的颜色模式之间切换。

您可以通过设置以下 设置 来隐藏 VS Code 的颜色预览

"editor.colorDecorators": false

要仅为 css、Less 和 SCSS 禁用它,请使用

"[css]": {
    "editor.colorDecorators": false
}

折叠

您可以使用行号和行开始之间的边距上的折叠图标来折叠源代码区域。折叠区域适用于所有声明(例如规则声明)以及源代码中的多行注释。

此外,您还可以使用以下区域标记来定义折叠区域:/*#region*//*#endregion*/(在 CSS/SCSS/Less 中)或 // #region// #endregion(在 SCSS/Less 中)。

如果您希望为 CSS、Less 和 SCSS 切换到基于缩进的折叠,请使用

"[css]": {
    "editor.foldingStrategy": "indentation"
},

Emmet 代码片段

Emmet 代码缩写支持 内置于 VS Code 中,建议与编辑器自动完成列表中的其他建议和代码片段一起列出。

提示:请参阅 Emmet 速查表 中的 CSS 部分,了解有效的缩写。

VS Code 还支持 用户定义的代码片段

语法验证和代码风格检查

支持 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 代码片段。

Hover in CSS

转到定义和查找引用

这适用于同一文件中的 Sass 和 Less 变量。根据 草案标准提案,也支持 CSS 变量

在 CSS、SCSS 和 Less 中,可以跳转到 @importurl() 链接的定义。

CSS 自定义数据

您可以通过声明性 自定义数据格式 扩展 VS Code 的 CSS 支持。通过将 css.customData 设置为遵循自定义数据格式的 JSON 文件列表,您可以增强 VS Code 对新 CSS 属性、@指令、伪类和伪元素的理解。然后,VS Code 将为提供的属性、@指令、伪类和伪元素提供语言支持,例如完成和悬停信息。

您可以在 vscode-custom-data 存储库中详细了解如何使用自定义数据。

格式化

CSS 语言功能扩展还提供格式化程序。格式化程序适用于 CSS、LESS 和 SCSS。它由 JS Beautify 库 实现,并附带以下设置

  • css.format.enable - 启用/禁用默认的 CSS 格式化程序。
  • css.format.newlineBetweenRules - 通过空白行分隔规则集。
  • css.format.newlineBetweenSelectors - 使用新行分隔选择器。
  • css.format.spaceAroundSelectorSeparator - 确保在选择器分隔符“>”、“+”、“~”(例如,a > b)周围使用空格字符。

相同的设置也适用于 lessscss

将 Sass 和 Less 转换为 CSS

VS Code 可以通过我们的集成 任务运行器 与 Sass 和 Less 编译器集成。我们可以使用它将 .scss.less 文件编译成 .css 文件。让我们逐步了解如何编译简单的 Sass/Less 文件。

步骤 1:安装 Sass 或 Less 编译器

在本教程中,我们将使用 sassless Node.js 模块。

注意:如果您还没有安装 Node.jsnpm 包管理器,则需要在本教程中安装它们。 为您的平台安装 Node.js。Node 包管理器 (npm) 包含在 Node.js 发行版中。您需要打开一个新的终端(命令提示符)才能使 npm 位于您的 PATH 中。

npm install -g sass less

步骤 2:创建一个简单的 Sass 或 Less 文件

在 VS Code 中打开一个空文件夹,并创建一个 styles.scssstyles.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 的附加文件。

如果您希望将该任务设置为默认构建任务,以便在按下 ⇧⌘B (Windows、Linux Ctrl+Shift+B) 时执行,请从全局 终端 菜单中执行 配置默认构建任务,然后从显示的列表中选择相应的 SassLess 任务。

注意:如果您的构建失败或您看到错误消息,例如“编译目录时必须指定输出目录”,请确保 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-sassgulp-less 是用于 sasslessc 模块的 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();
  })
);

这里发生了什么?

  1. 我们的 default gulp 任务在启动时首先运行一次 sassless 任务。
  2. 然后它会监视我们工作区根目录中任何 SCSS/Less 文件的更改,例如当前在 VS Code 中打开的文件夹。
  3. 它会获取已更改的 SCSS/Less 文件集,并通过相应的编译器(例如 gulp-sassgulp-less)运行它们。
  4. 现在我们有一组 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 检查,请将设置设置为 warningerror;要禁用它,请使用 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 使用 paddingborder 时,请勿使用 widthheight ignore
universalSelector 使用通用选择器 * 时发出警告,因为它已知速度很慢,应避免使用 ignore
zeroUnits 当使用带有单位的零时发出警告,例如 0em,因为零不需要单位。 ignore
fontFaceProperties 使用未定义 srcfont-family 属性的 @font-face 规则时发出警告 warning
hexColorLength 使用不包含三个或六个十六进制数字的十六进制数字时发出警告 error
argumentsInColorFunction 在颜色函数(例如 rgb)中参数数量无效时发出警告 error
unknownProperties 使用未知属性时发出警告 warning
ieHack 使用 IE hack *propertyName_propertyName 时发出警告 ignore
unknownVendorSpecificProperties 使用未知供应商特定属性时发出警告 ignore
propertyIgnoredDueToDisplay 使用因显示而被忽略的属性时发出警告。例如,对于 display: inlinewidthheightmargin-topmargin-bottomfloat 属性无效。 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 扩展。