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 符號。

懸停提示(Hovers)

將滑鼠停留在選取器或屬性上方,將會提供與該 CSS 規則相符的 HTML 程式碼片段。

Hover in CSS

移至宣告並尋找參照

這支援同一個檔案中的 Sass 和 Less 變數。同時也支援符合草案標準提案CSS 變數

CSS、SCSS 和 Less 中的 @importurl() 連結支援「移至定義」。

CSS 自訂資料

您可以透過宣告式的自訂資料格式來擴充 VS Code 的 CSS 支援。透過將 css.customData 在 VS Code 中開啟 在 VS Code Insiders 中開啟 設為遵循自訂資料格式的 JSON 檔案清單,您可以增強 VS Code 對新 CSS 屬性、at-directives、偽類和偽元素的理解。VS Code 隨後將針對所提供的屬性、at-directives、偽類和偽元素提供例如完成與懸停資訊等語言支援。

您可以在 vscode-custom-data 存放庫中閱讀更多關於使用自訂資料的資訊。

格式化

CSS 語言功能 (CSS Languages Features) 擴充功能也提供格式化工具。此格式化工具適用於 CSS、LESS 和 SCSS。它是由 JS Beautify 程式庫所實作,並隨附下列設定

  • css.format.enable 在 VS Code 中開啟 在 VS Code Insiders 中開啟 - 啟用/停用預設的 CSS 格式化工具。
  • css.format.newlineBetweenRules 在 VS Code 中開啟 在 VS Code Insiders 中開啟 - 以空白行區隔規則集。
  • css.format.newlineBetweenSelectors 在 VS Code 中開啟 在 VS Code Insiders 中開啟 - 以新行區隔選取器。
  • css.format.spaceAroundSelectorSeparator 在 VS Code 中開啟 在 VS Code Insiders 中開啟 - 確保選取器分隔符號 '>'、'+'、'~' 周圍有一個空格字元 (例如 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

如果您想要讓該工作成為要執行的預設組建工作,請從全域終端機功能表執行設定預設組建工作,然後從呈現的清單中選取對應的 SassLess 工作。

注意:如果您的組建失敗,或您看到類似「編譯目錄時必須指定輸出目錄」 ("An output directory must be specified when compiling a directory") 的錯誤訊息,請確定 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 工作

在先前相同的資料夾 (在 .vscode 資料夾下包含 styles.scss/styles.lesstasks.json) 中開啟 VS Code,並在根目錄中建立 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 default 工作

若要完成與 VS Code 的工作整合,我們需要修改之前的工作組態,以執行我們剛剛建立的預設 Gulp 工作。您可以刪除 tasks.json 檔案,或是將其清空且只保留 "version": "2.0.0" 屬性。現在,從全域終端機功能表執行執行工作。請注意,系統會向您呈現列出 gulp 檔案中所定義工作的挑選器。選取 gulp: default 來啟動工作。我們允許您掃描輸出中的編譯問題。根據編譯器,從清單中選取適當的項目來掃描工具輸出中的錯誤與警告。如果您不想掃描輸出,請從呈現的清單中選取絕不掃描組建輸出。此時,如果您建立或修改 Less 或 SASS 檔案,您會看到產生的對應 CSS 檔案並且/或者在儲存時反映變更。您也可以啟用自動儲存 (Auto Save) 來讓流程更流暢。

如果您想要讓 gulp: default 工作成為按下 ⇧⌘B (Windows, Linux Ctrl+Shift+B) 時所執行的預設組建工作,請從全域終端機功能表執行設定預設組建工作,並從呈現的清單中選取 gulp: default

步驟 4:終止 gulp default 工作

gulp: default 工作會在背景執行,並監控 Sass/Less 檔案的檔案變更。如果您想要停止工作,可以使用全域終端機功能表中的終止工作

自訂 CSS、SCSS 和 Less 設定

您可以將下列 lint 警告設定為使用者與工作區設定

validate 設定可讓您關閉內建驗證。如果您寧願使用不同的 linter,就會這樣做。

識別碼 說明 預設值
css.validate 啟用或停用所有 css 驗證 true
less.validate 啟用或停用所有 less 驗證 true
scss.validate 啟用或停用所有 scss 驗證 true

若要為 CSS 設定選項,請使用 css.lint.作為識別碼的前綴;針對 SCSS 與 Less,請分別使用 scss.lint.less.lint.

如果您想要啟用 lint 檢查,請將設定設為 warningerror;若要將其停用,請使用 ignore。Lint 檢查會在您輸入時執行。

識別碼 說明 預設值
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 當使用 @font-face 規則而未定義 srcfont-family 屬性時發出警告 warning
hexColorLength 當使用不由三或六個十六進位數字組成的十六進位數字時發出警告 錯誤
argumentsInColorFunction 當色彩函數中的參數數量無效時發出警告,例如 rgb 錯誤
unknownProperties 當使用未知屬性時發出警告 warning
ieHack 當使用 IE 駭客技法 (hack) *propertyName_propertyName 時發出警告 ignore
unknownVendorSpecificProperties 當使用未知的廠商特定屬性時發出警告 ignore
propertyIgnoredDueToDisplay 當使用因 display 而被忽略的屬性時發出警告。例如,在 display: inline 下,widthheightmargin-topmargin-bottomfloat 屬性將沒有作用。 warning
important 當使用 !important 時發出警告,因為這表示整個 CSS 的特異性已失控且需要重構。 ignore
float 當使用 float 時發出警告,因為浮動會導致脆弱的 CSS,如果版面配置的某個部分變更,就很容易損壞。 ignore
idSelector 當針對識別碼使用選取器 #id 時發出警告,因為選取器不應包含 ID,因為這些規則與 HTML 的耦合度太高。 ignore

後續步驟

繼續閱讀以了解

常見問題

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

是,將滑鼠停留在 CSS 顏色參考上就會顯示色彩選擇器。

是否有支援以縮排為基礎的 Sass 語法 (.sass)?

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

English 한국어 中文(简体) 中文(繁體)
© . This website operates independently and is not affiliated with or endorsed by Microsoft. All brand names, logos, and trademarks are the property of their respective owners.