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 符號。
懸停資訊
將滑鼠懸停在選擇器或屬性上將提供與 CSS 規則匹配的 HTML 片段。
轉到宣告並查詢引用
這在同一檔案中支援 Sass 和 Less 變數。根據 草案標準提案,還支援 CSS 變數。
CSS、SCSS 和 Less 中的 @import
和 url()
連結支援跳轉到定義。
CSS 自定義資料
你可以透過宣告性 自定義資料格式 擴充套件 VS Code 的 CSS 支援。透過將 css.customData 設定為遵循自定義資料格式的 JSON 檔案列表,你可以增強 VS Code 對新 CSS 屬性、at-規則、偽類和偽元素的理解。然後,VS Code 將為所提供的屬性、at-規則、偽類和偽元素提供語言支援,例如完成和懸停資訊。
你可以在 vscode-custom-data 儲存庫中閱讀有關使用自定義資料的更多資訊。
格式化
CSS 語言特性擴充套件還提供了一個格式化程式。該格式化程式適用於 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 任務。
注意:如果你的構建失敗或看到錯誤訊息,例如“編譯目錄時必須指定輸出目錄”,請確保
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 任務
在與之前相同的資料夾中開啟 VS Code(其中包含 .vscode
資料夾下的 styles.scss
/styles.less
和 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();
})
);
這裡發生了什麼?
- 我們的
default
gulp 任務在啟動時首先執行一次sass
或less
任務。 - 然後它會監視我們工作區根目錄中任何 SCSS/Less 檔案的更改,例如當前在 VS Code 中開啟的資料夾。
- 它獲取已更改的 SCSS/Less 檔案集,並透過我們各自的編譯器執行它們,例如
gulp-sass
、gulp-less
。 - 我們現在有一組 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 檢查,請將設定設為 warning
或 error
,使用 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 | 當使用 padding 或 border 時,不要使用 width 或 height |
ignore |
universalSelector | 警告使用通用選擇器 * ,因為它已知速度慢且應避免 |
ignore |
zeroUnits | 警告零帶單位(例如 0em ),因為零不需要單位。 |
ignore |
fontFaceProperties | 警告在使用 @font-face 規則時未定義 src 和 font-family 屬性 |
warning |
hexColorLength | 警告使用不包含三位或六位十六進位制數字的十六進位制數字 | error |
argumentsInColorFunction | 警告顏色函式(例如 rgb )中的引數數量無效 |
error |
unknownProperties | 警告使用未知屬性 | warning |
ieHack | 警告使用 IE hack *propertyName 或 _propertyName |
ignore |
unknownVendorSpecificProperties | 警告使用未知供應商特定屬性 | ignore |
propertyIgnoredDueToDisplay | 警告屬性因顯示而忽略。例如,對於 display: inline ,width 、height 、margin-top 、margin-bottom 和 float 屬性無效。 |
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 擴充套件。