CSS, SCSS 與 Less
Visual Studio Code 內建支援編輯 CSS .css、SCSS .scss 和 Less .less 樣式表。此外,您也可以安裝擴充功能以獲得更多功能。
提示:按一下上方的擴充功能磚塊以閱讀說明和評論,藉此決定哪一個擴充功能最適合您。請參閱 Marketplace 瞭解更多資訊。
IntelliSense
VS Code 支援選取器、屬性和值。請使用 ⌃Space (Windows, Linux Ctrl+Space) 來取得內容特定選項的清單。

建議包含詳盡的文件,包括支援該屬性的瀏覽器清單。若要檢視所選項目完整的說明文字,請使用 ⌃Space (Windows, Linux Ctrl+Space)。
語法著色與顏色預覽
當您輸入時,除了語法突顯外,還有內文的顏色預覽。

按一下顏色預覽將會啟動內建的色彩選擇器,其支援色相、飽和度和透明度的設定。

提示:您可以在選擇器頂端按一下顏色字串,以在不同的色彩模式之間切換。
您可以透過設定下列設定來隱藏 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 程式碼片段。

移至宣告並尋找參照
這支援同一個檔案中的 Sass 和 Less 變數。同時也支援符合草案標準提案的 CSS 變數。
CSS、SCSS 和 Less 中的 @import 與 url() 連結支援「移至定義」。
CSS 自訂資料
您可以透過宣告式的自訂資料格式來擴充 VS Code 的 CSS 支援。透過將 css.customData 設為遵循自訂資料格式的 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 - 啟用/停用預設的 CSS 格式化工具。
- css.format.newlineBetweenRules - 以空白行區隔規則集。
- css.format.newlineBetweenSelectors - 以新行區隔選取器。
- css.format.spaceAroundSelectorSeparator - 確保選取器分隔符號 '>'、'+'、'~' 周圍有一個空格字元 (例如
a > b)。
less 與 scss 也存在相同的設定。
將 Sass 和 Less 轉譯為 CSS
VS Code 可以透過我們整合的工作執行器與 Sass 和 Less 轉譯器進行整合。我們可以使用此功能將 .scss 或 .less 檔案轉譯為 .css 檔案。讓我們逐步解說如何轉譯簡單的 Sass/Less 檔案。
步驟 1:安裝 Sass 或 Less 轉譯器
在本逐步解說中,我們使用 sass 或 less Node.js 模組。
注意:如果您尚未安裝 Node.js 和 npm 套件管理員,您必須先進行安裝才能完成本逐步解說。為您的平臺安裝 Node.js。Node 套件管理員 (npm) 已包含在 Node.js 發行版本中。您必須開啟新的終端機 (命令提示字元),才能將
npm加入您的 PATH 中。
npm install -g sass less
步驟 2:建立簡單的 Sass 或 Less 檔案
在空白資料夾中開啟 VS Code,並建立 styles.scss 或 styles.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。
如果您想要讓該工作成為要執行的預設組建工作,請從全域終端機功能表執行設定預設組建工作,然後從呈現的清單中選取對應的 Sass 或 Less 工作。
注意:如果您的組建失敗,或您看到類似「編譯目錄時必須指定輸出目錄」 ("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-sass和gulp-less是我們先前使用的sass和lessc模組的 Gulp 外掛程式。您可以使用許多其他 Gulp Sass 和 Less 外掛程式,以及適用於 Grunt 的外掛程式。
您可以在終端機中輸入 gulp -v 來測試您的 gulp 安裝是否成功。您應該會看到全域 (CLI) 與本機安裝所顯示的版本。
步驟 2:建立簡單的 Gulp 工作
在先前相同的資料夾 (在 .vscode 資料夾下包含 styles.scss/styles.less 和 tasks.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();
})
);
這裡發生了什麼事?
- 我們的
defaultgulp 工作在啟動時會先執行一次sass或less工作。 - 然後它會監視我們工作區根目錄中任何 SCSS/Less 檔案的變更,例如目前在 VS Code 中開啟的資料夾。
- 它會取得已變更的一組 SCSS/Less 檔案,並透過我們各自的編譯器執行它們,例如
gulp-sass、gulp-less。 - 我們現在有一組 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 檢查,請將設定設為 warning 或 error;若要將其停用,請使用 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 | 使用 padding 或 border 時,請勿使用 width 或 height |
ignore |
| universalSelector | 當使用通用選取器 * 時發出警告,因為已知它速度較慢且應避免使用 |
ignore |
| zeroUnits | 當零帶有單位 (例如 0em) 時發出警告,因為零不需要單位。 |
ignore |
| fontFaceProperties | 當使用 @font-face 規則而未定義 src 和 font-family 屬性時發出警告 |
warning |
| hexColorLength | 當使用不由三或六個十六進位數字組成的十六進位數字時發出警告 | 錯誤 |
| argumentsInColorFunction | 當色彩函數中的參數數量無效時發出警告,例如 rgb |
錯誤 |
| unknownProperties | 當使用未知屬性時發出警告 | warning |
| ieHack | 當使用 IE 駭客技法 (hack) *propertyName 或 _propertyName 時發出警告 |
ignore |
| unknownVendorSpecificProperties | 當使用未知的廠商特定屬性時發出警告 | ignore |
| propertyIgnoredDueToDisplay | 當使用因 display 而被忽略的屬性時發出警告。例如,在 display: inline 下,width、height、margin-top、margin-bottom 和 float 屬性將沒有作用。 |
warning |
| important | 當使用 !important 時發出警告,因為這表示整個 CSS 的特異性已失控且需要重構。 |
ignore |
| float | 當使用 float 時發出警告,因為浮動會導致脆弱的 CSS,如果版面配置的某個部分變更,就很容易損壞。 |
ignore |
| idSelector | 當針對識別碼使用選取器 #id 時發出警告,因為選取器不應包含 ID,因為這些規則與 HTML 的耦合度太高。 |
ignore |
後續步驟
繼續閱讀以了解
- 設定工作 (Configure Tasks) - 深入了解工作,以協助您將 SCSS 與 Less 轉譯為 CSS。
- 基本編輯 - 了解功能強大的 VS Code 編輯器。
- 程式碼導覽 - 在原始碼中快速移動。
- HTML - CSS 只是開始,VS Code 也對 HTML 提供極佳的支援。
常見問題
VS Code 是否提供色彩選擇器?
是,將滑鼠停留在 CSS 顏色參考上就會顯示色彩選擇器。
是否有支援以縮排為基礎的 Sass 語法 (.sass)?
否,但 Marketplace 中有數個擴充功能支援縮排風格的 Sass,例如最初由 Robin Bentley 建立、現在由 Leonard Grosoli 維護的 Sass 擴充功能。