參加你附近的 ,瞭解 VS Code 中的 AI 輔助開發。

CSS、SCSS 和 Less

Visual Studio Code 內建支援編輯 CSS .css、SCSS .scss 和 Less .less 樣式表。此外,你還可以安裝擴充套件以獲得更多功能。

提示:點選上方擴充套件磁貼可閱讀描述和評論,以決定哪個擴充套件最適合你。有關更多資訊,請參閱 Marketplace

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
}

摺疊

你可以使用行號和行首之間的裝訂線上的摺疊圖示摺疊原始碼區域。所有宣告(例如,規則宣告)和原始碼中的多行註釋都可用於摺疊區域。

此外,你可以使用以下區域標記來定義摺疊區域: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 片段。

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(其中包含 .vscode 資料夾下的 styles.scss/styles.lesstasks.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 語句,因為 import 語句是按順序載入的,這對網頁效能有負面影響 ignore
boxModel 當使用 paddingborder 時,不要使用 widthheight ignore
universalSelector 警告使用通用選擇器 *,因為它已知速度慢且應避免 ignore
zeroUnits 警告零帶單位(例如 0em),因為零不需要單位。 ignore
fontFaceProperties 警告在使用 @font-face 規則時未定義 srcfont-family 屬性 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 擴充套件。