在 VS Code 中试用

CSS、SCSS 和 Less

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

提示:点击上方的扩展磁贴以阅读描述和评论,从而决定哪个扩展最适合您。在市场中查看更多内容。

智能感知

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
}

折叠

您可以使用行号和行首之间边槽上的折叠图标来折叠源代码区域。所有声明(例如,规则声明)和源代码中的多行注释都可以折叠。

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

如果您更喜欢将 CSS、Less 和 SCSS 的折叠切换到基于缩进的方式,请使用

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

Emmet 代码片段

VS Code 内置了Emmet 缩写支持,建议会与其他建议和代码片段一起显示在编辑器的自动补全列表中。

提示:请参阅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 属性、at-指令、伪类和伪元素的理解。VS Code 将为所提供的属性、at-指令、伪类和伪元素提供语言支持,例如补全和悬停信息。

您可以在 vscode-custom-data 仓库中阅读更多关于使用自定义数据的信息。

格式化

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

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

如果您想将该任务设置为默认构建任务,请从全局终端菜单中执行配置默认构建任务,并从显示的列表中选择相应的 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 设置

您可以将以下代码检查警告配置为用户和工作区设置

validate 设置允许您关闭内置验证。如果您更喜欢使用不同的代码检查工具,则可以这样做。

ID 描述 默认值
css.validate 启用或禁用所有 CSS 验证 true
less.validate 启用或禁用所有 Less 验证 true
scss.validate 启用或禁用所有 SCSS 验证 true

要配置 CSS 的选项,请使用 css.lint. 作为 ID 前缀;对于 SCSS 和 Less,请分别使用 scss.lint.less.lint.

如果您想启用代码检查,请将设置设为 warningerror,使用 ignore 禁用它。代码检查会在您输入时执行。

ID 描述 默认值
验证 启用或禁用所有验证 true
兼容的供应商前缀 当使用带有供应商特定前缀的属性时(例如 -webkit-transition),请确保同时包含所有其他供应商特定属性,例如 -moz-transition-ms-transition-o-transition 忽略
供应商前缀 当使用带有供应商特定前缀的属性时,例如 -webkit-transition,请确保同时包含标准属性(如果存在),例如 transition 警告
重复属性 警告同一规则集中的重复属性 忽略
空规则 警告空规则集 警告
导入声明 警告使用 import 语句,因为 import 语句是顺序加载的,这对网页性能有负面影响。 忽略
盒模型 在使用 paddingborder 时不要使用 widthheight 忽略
通用选择器 警告使用通用选择器 *,因为它已知速度较慢且应避免使用。 忽略
零单位 警告零带单位的情况,例如 0em,因为零不需要单位。 忽略
字体属性 警告在使用 @font-face 规则时未定义 srcfont-family 属性。 警告
十六进制颜色长度 警告使用非三位或六位十六进制数字的十六进制颜色。 错误
颜色函数中的参数 警告颜色函数中参数数量无效(例如 rgb)。 错误
未知属性 警告使用未知属性 警告
IE Hack 警告使用 IE hack *propertyName_propertyName 忽略
未知供应商特定属性 警告使用未知供应商特定属性。 忽略
因显示属性而被忽略的属性 警告使用因显示属性而被忽略的属性。例如,当 display: inline 时,widthheightmargin-topmargin-bottomfloat 属性将不起作用。 警告
重要 警告使用 !important,因为它表明整个 CSS 的特异性已失控,需要重构。 忽略
浮动 警告使用 float,因为浮动会导致脆弱的 CSS,如果布局的某个方面发生变化,很容易被破坏。 忽略
ID 选择器 警告使用 ID 选择器 #id,因为选择器不应包含 ID,这些规则与 HTML 耦合过于紧密。 忽略

下一步

继续阅读以了解

  • 配置任务 - 深入了解任务,帮助您将 SCSS 和 Less 转译为 CSS。
  • 基本编辑 - 了解功能强大的 VS Code 编辑器。
  • 代码导航 - 快速浏览您的源代码。
  • HTML - CSS 只是开始,VS Code 也对 HTML 提供非常好的支持。

常见问题

VS Code 提供颜色选择器吗?

是的,将鼠标悬停在 CSS 颜色引用上,就会显示颜色选择器。

是否支持基于缩进的 Sass 语法 (.sass)?

不,但在市场中有几个扩展支持缩进风格的 Sass,例如,最初由 Robin Bentley 创建,现在由 Leonard Grosoli 维护的 Sass 扩展。