🚀 在 VS Code 中免費取得

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
}

摺疊

您可以使用行號和行首之間邊界上的摺疊圖示,摺疊原始碼的區域。摺疊區域適用於所有宣告 (例如,規則宣告) 和原始碼中的多行註解。

此外,您可以使用下列區域標記來定義摺疊區域:CSS/SCSS/Less 中的 /*#region*//*#endregion*/ 或 SCSS/Less 中的 // #region// #endregion

如果您偏好為 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 屬性、at-directives、偽類別和偽元素的理解。然後,VS Code 將為提供的屬性、at-directives、偽類別和偽元素提供語言支援,例如完成和浮動提示資訊。

您可以在 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 Package Manager (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. 然後,它會監看工作區根目錄 (例如,VS Code 中目前開啟的資料夾) 中任何 SCSS/Less 檔案的變更。
  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 描述 預設
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: inline 時,widthheightmargin-topmargin-bottomfloat 屬性沒有任何作用。 warning
important 警告使用 !important,因為這表示整個 CSS 的明確性已失去控制,需要重構。 ignore
float 警告使用 float,因為浮動會導致 CSS 脆弱,如果版面配置的某個方面發生變更,則很容易損壞。 ignore
idSelector 警告使用 id #id 的選取器,因為選取器不應包含 ID,因為這些規則與 HTML 的耦合過於緊密。 ignore

後續步驟

請繼續閱讀以了解

  • 設定工作 - 深入了解工作,以協助您將 SCSS 和 Less 轉譯為 CSS。
  • 基本編輯 - 了解功能強大的 VS Code 編輯器。
  • 程式碼導覽 - 在您的原始碼中快速移動。
  • HTML - CSS 只是開始,VS Code 也非常支援 HTML。

常見問題

VS Code 是否提供色彩選取器?

是,將滑鼠游標停留在 CSS 色彩參考上方,就會顯示色彩選取器。

是否支援基於縮排的 Sass 語法 (.sass)?

否,但市集中有幾個擴充功能支援 Sass 的縮排風格,例如,最初由 Robin Bentley 建立,現在由 Leonard Grosoli 維護的 Sass 擴充功能。