CSS 習作|Sass 入門學習資源,使用 VS Code 插件 Live Sass Compiler

更新於 2023/08/27閱讀時間約 9 分鐘
raw-image

本篇將不同 Sass 學習資源彙整在此,作爲學習筆記,大多來自 w3schools 和六角學院,相關連結也一並記錄下來,以便可以隨時查看、更新。

👉🏻 文章上半段多為學習資源紀錄以及整理,下半段則紀錄使用 VS Code 插件來建立 Sass 環境,可依自己所需點擊目錄來閱讀文章。

Sass wiki 維基

Sass(英文全稱:Syntactically Awesome Stylesheets)是一個最初由Hampton Catlin 設計並由 Natalie Weizenbaum 開發的層疊樣式表語言。

Sass Basics

Sass 官方學習教程,可先閱讀以理解 Sass。

w3schools Sass Tutorial

  • Sass stands for Syntactically Awesome Stylesheet
  • Sass is an extension to CSS
  • Sass is a CSS pre-processor
  • Sass is completely compatible with all versions of CSS
  • Sass reduces repetition of CSS and therefore saves time
  • Sass was designed by Hampton Catlin and developed by Natalie Weizenbaum in 2006
  • Sass is free to download and use

Sass 中縮排是語法的一部分,SCSS是巢狀元語言。

六角學院:SCSS 與 Sass 格式差異

圖片來源:https://courses.hexschool.com/courses/670032/lectures/11949492

圖片來源:https://courses.hexschool.com/courses/670032/lectures/11949492

  1. SCSS 撰寫格式教學
  2. Sass 撰寫格式教學
  3. Sass 官方教學文章:Sass Syntax

六角學院:Sass 與 CSS 的不同之處

看完教程後,我繪製了瀏覽器與 Sass、CSS 之間的關係、運作流程:

Sass 需要轉譯為瀏覽器能讀懂的 CSS

Sass 需要轉譯為瀏覽器能讀懂的 CSS

  1. 如上圖,因瀏覽器看不懂 Sass,因此需要透過轉譯將 Sass 轉譯成 CSS
  2. 因此,開始撰寫 Sass 前,必須先安裝建立環境,使 Sass 能自動轉譯成 CSS
  3. 開始撰寫時都寫在 Sass 檔案裡面,不會寫在 CSS 檔裡面,因為 CSS 檔案已經是由 Sass 編譯出來的結果。

Sass 學習乾貨

下面針對不同主題,將整理來的學習資源以相關性放在一起(盡量 XD),大多來自 w3schools 和六角學院,相關連結也一並記錄下來。

1. Why Use Sass

  1. 減少重工負擔
  2. 變數篇 - 整合相同設定好幫手
  3. 運用 Sass 變數、管理樣式方法( 利用變數管理重複設定值 )
  4. 補充筆記:參考這裡學習 Sass 知識
  5. CSS 架構演化史 - 廖洧杰 | MOPCON 2020
  6. Sass教學手冊導讀 Learn-Sass-in-90-days
  7. sass-doc-zh (中文)

Stylesheets are getting larger, more complex, and harder to maintain. This is where a CSS pre-processor can help.
Sass lets you use features that do not exist in CSS, like variables, nested rules, mixins, imports, inheritance, built-in functions, and other stuff.

2. How Does Sass Work

A browser does not understand Sass code.
Therefore, you will need a Sass pre-processor to convert Sass code into standard CSS. This process is called transpiling.(編譯、轉譯)
So, you need to give a transpiler (some kind of program) some Sass code and then get some CSS code back.

Transpiling is a term for taking a source code written in one language and transform/translate it into another language.

3. Sass File Type

Sass files has the ".scss" file extension.

4. Sass Comments

Sass supports standard CSS comments /* comment */, and in addition it supports inline comments // comment

sass 程式碼範例

sass 程式碼範例

5. System Requirements for Sass

  • Operating system - Sass is platform independent
  • Browser support - Sass works in Edge/IE (from IE 8), Firefox, Chrome, Safari, Opera
  • Programming language - Sass is based on Ruby


------- 我是分隔線 -------



安裝 Live Sass Compiler

本篇下半段,將進入使用 VS Code 插件來建立 Sass 環境。

Live Sass Compiler

Live Sass Compiler

安裝 Sass 有不同種方式,可參考 Sass 官方文件安裝教學

而在本篇筆記中,我則透過 VS Code 的插件來轉譯 Sass,這個插件為:Live Sass Compiler,或者可參閱以下安裝教學:

  1. VS CODE 編譯 Sass 教學
  2. 使用VSCode外掛自動編譯SASS/SCSS


安裝步驟:

  1. 開啟 VS Code。
  2. 在延伸模組上搜尋「Live Sass Compiler」。
  3. 點擊藍色按鈕安裝,即可完成。
安裝 Live Sass Compiler

安裝 Live Sass Compiler

安裝結束後,重新開啟 VS Code ,可以在視窗下方的「藍色狀態列」上看到「Watch Sass」,表示有成功安裝了,如下圖:

raw-image

如何使用 Live Sass Compiler 轉譯 Sass

我繪製了可能只有我自己看得懂的操作流程 XD

我繪製了可能只有我自己看得懂的操作流程 XD

安裝成功後,接續以下步驟來運用 Live Sass Compiler 轉譯 Sass:

  1. 在桌面上建立一個「project」專案資料夾,並在 「projects 資料夾內」建立一個「sass」資料夾,用來存放 scss 檔案。
  2. 接著,我們在 scss 資料夾內新增一個 all.scss 檔案。
  3. 開啟 all.scss 檔案,開始撰寫 Sass 語法。
  4. 點擊「藍色狀態列」上的「Watch Sass」開始轉譯寫在裡面的 Sass 語法。
  5. Live Sass Compiler 轉譯後自動新建了「css 資料夾」,裡面新增了已經轉譯的「all.css」、「all.css.map」兩個檔案,如下圖:
使用 Live Sass Compiler 轉譯 Sass 成 CSS

使用 Live Sass Compiler 轉譯 Sass 成 CSS

更改 Live Sass Compiler 存放 CSS 路徑

需特別注意的是,Live Sass Complier 預設情況下,編譯後不會自動新增資料夾,所以編譯後的檔案會和 all.scss 檔案放在同一個資料夾。
因此,如果希望另外產生資料夾來存放 all.css,需要手動更改存放路徑,操作流程如下:

  1. Code > 喜好設定 > 設定 > 使用者 > Live Sass Complier > 在 settings.json 內編輯
raw-image
  1. 點擊在 settings.json 內編輯後,看見以下程式碼:
raw-image
  1. 在 settings.json 內加入以下語法,加入後如下圖所示:
,
"liveSassCompile.settings.formats":[
{
"savePath": "/css"
}
]
raw-image

特別提醒 😮‍💨

剛開始建立完環境後撰寫 sass,隔天再度打開 VS Code,準備繼續寫 projests 的時候發現自己的東西大跑版、破版、樣式都沒有出現... 不斷確認自己哪裡出了問題,真的鬼打牆...就這樣一直卡了很久, 卡到快要瘋掉的地步,然後在一個熱到爆炸的時機點發現,好像是因為重新打開 VS Code 後,沒有再次按下「Watch Sass」,按下去後,東西都恢復正常了...

每次撰寫時要注意 Watch Sass 有沒有按!

也記錄一下其他可能會影響 Sass 無法正常運作的情況:

  1. 沒有開啟「Watch Sass」。
  2. 在 all.scss 檔案撰寫過程中,多打的文字或英文沒有記得註解,使得 sass 格式不正確。
  3. 使用 sass 的語法錯誤,例如少打 「{ 」或 多打「 ; 」,等等使語法錯誤。

結語

練習練習練習練習練習練習練習練習...
走到這個階段,花了不少時間來初步瞭解 Sass,相信日後可以漸漸運用 Sass 更多強大的地方...加油。

Practice make perfect, 我是正在自我習作中的 Draw,我們下篇見 🙇🏻


avatar-img
5會員
10內容數
從零開始,記錄網頁設計的學習過程。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
學習如何學習 的其他內容
養成 1px 都不差的切版練習,紀錄我的訓練過程。
本篇習作內容進入到 CSS 排版實作,一起瞭解 Flexbox,開始第一個網頁排版吧 💪🏻!
box-sizing 是 CSS 屬性的一種,它使我們可以改變盒模型的計算方式。
本篇習作加強自我對 CSS Box Model 的觀念,也是在實作練習中發現自己雖然看似理解了盒模型,但其實在應用上尚不熟悉,因此藉由筆記重新梳理和練習,將 CSS Box Model 的基礎觀念整理並釐清,一起來看看吧!
本篇習作內容,除了練習六角預習影音內的常用語法章節外,也額外整理了其它常用於文本的 HTML 元素,希望能透過這樣的整理,在未來設計結構更複雜的網站介面內容時,能扎穩根基。
display 是一種 CSS 屬性,指定「 是否 / 如何 」顯示元素,而每一個 HTML element 都有預設的 display value,然而在預設的情況下,新手如我在剛接觸時常踩入深不見底的盲區, 一起來釐清學會辨識吧!
養成 1px 都不差的切版練習,紀錄我的訓練過程。
本篇習作內容進入到 CSS 排版實作,一起瞭解 Flexbox,開始第一個網頁排版吧 💪🏻!
box-sizing 是 CSS 屬性的一種,它使我們可以改變盒模型的計算方式。
本篇習作加強自我對 CSS Box Model 的觀念,也是在實作練習中發現自己雖然看似理解了盒模型,但其實在應用上尚不熟悉,因此藉由筆記重新梳理和練習,將 CSS Box Model 的基礎觀念整理並釐清,一起來看看吧!
本篇習作內容,除了練習六角預習影音內的常用語法章節外,也額外整理了其它常用於文本的 HTML 元素,希望能透過這樣的整理,在未來設計結構更複雜的網站介面內容時,能扎穩根基。
display 是一種 CSS 屬性,指定「 是否 / 如何 」顯示元素,而每一個 HTML element 都有預設的 display value,然而在預設的情況下,新手如我在剛接觸時常踩入深不見底的盲區, 一起來釐清學會辨識吧!
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
本文將介紹如何使用 CSS Media Queries 來創建適應不同裝置的網頁,在現今多裝置的網頁設計中,可以透過 CSS Media Queries 來讓我們根據不同的裝置特性,如螢幕尺寸、解析度等,來應用不同的樣式規則。
Thumbnail
本文將介紹 CSS 的四個基本概念:margin(外邊距)、padding(內邊距)、border(邊框)和 box-sizing(盒模型),接下來將透過實際的程式碼範例來展示這些概念如何運作。
Thumbnail
本文將介紹 CSS 中的position屬性,position是用於控制網頁元素在頁面上的排列,接下來將逐一介紹position屬性的五種不同值:static, relative, absolute, fixed, 和 sticky,以及它們如何影響元素的排列。
Thumbnail
本文將介紹 CSS Flexbox,CSS Flexbox 是網頁設計的佈局工具,Flexbox 能使元素的排列和對齊變得更加靈活和直觀,從而大大簡化了響應式網頁設計的過程,通過了解 Flexbox 的概念和屬性,你將能夠利用 Flexbox 創建靈活且響應性強的網頁佈局。
Thumbnail
在網頁中,每個按鈕、文字或圖片等都是通過 CSS 來設定它們的樣子,要做到這點,我們就需要用到 CSS 選擇器。本文會從最簡單的選擇器開始講起,讓你了解如何使用 CSS 選擇器。
Thumbnail
想要知道如何用最新技術來製作一個App嗎? 跟著JayLin用React | Redux Tool Kit | TypeScript | TailwildCSS 來製作一個Drawing App
Thumbnail
不論是在基礎或是進階的版面排列,幾乎離開不了 position 系列的 CSS 語法,如果對於這些語法不熟悉,要快速完成畫面需求幾乎是不可能的,甚至會延宕整個團隊的開發速度(對,position 語法就是這麽重要)。
Thumbnail
對於前端初學者來說,在切版時會出現很多規則、不規則的網頁區塊,這時候我們會嘗試用各種相對定位、絕對定位、margin 或是 padding 的方式來進行網頁區塊的推擠。
Thumbnail
明明想要某個欄位的寬高為 200px,卻發現自己不知道為什麼怎麼更改都會改不動,又或者寬高更改了,卻沒有辦法與其他元素並列。 上述的狀況,通常都是在不熟悉 HTML display 特性而產生的狀況下才會出現⋯⋯
Thumbnail
與HTML不同,CSS是專門修改網頁內容「樣式」的程式語言,也就是說你沒有辦法透過CSS去新增網頁的文字或是圖片等相關的內容,但你可以透過HTML新增網頁內容後,再使用CSS去修改他的樣式,例如⋯⋯
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
本文將介紹如何使用 CSS Media Queries 來創建適應不同裝置的網頁,在現今多裝置的網頁設計中,可以透過 CSS Media Queries 來讓我們根據不同的裝置特性,如螢幕尺寸、解析度等,來應用不同的樣式規則。
Thumbnail
本文將介紹 CSS 的四個基本概念:margin(外邊距)、padding(內邊距)、border(邊框)和 box-sizing(盒模型),接下來將透過實際的程式碼範例來展示這些概念如何運作。
Thumbnail
本文將介紹 CSS 中的position屬性,position是用於控制網頁元素在頁面上的排列,接下來將逐一介紹position屬性的五種不同值:static, relative, absolute, fixed, 和 sticky,以及它們如何影響元素的排列。
Thumbnail
本文將介紹 CSS Flexbox,CSS Flexbox 是網頁設計的佈局工具,Flexbox 能使元素的排列和對齊變得更加靈活和直觀,從而大大簡化了響應式網頁設計的過程,通過了解 Flexbox 的概念和屬性,你將能夠利用 Flexbox 創建靈活且響應性強的網頁佈局。
Thumbnail
在網頁中,每個按鈕、文字或圖片等都是通過 CSS 來設定它們的樣子,要做到這點,我們就需要用到 CSS 選擇器。本文會從最簡單的選擇器開始講起,讓你了解如何使用 CSS 選擇器。
Thumbnail
想要知道如何用最新技術來製作一個App嗎? 跟著JayLin用React | Redux Tool Kit | TypeScript | TailwildCSS 來製作一個Drawing App
Thumbnail
不論是在基礎或是進階的版面排列,幾乎離開不了 position 系列的 CSS 語法,如果對於這些語法不熟悉,要快速完成畫面需求幾乎是不可能的,甚至會延宕整個團隊的開發速度(對,position 語法就是這麽重要)。
Thumbnail
對於前端初學者來說,在切版時會出現很多規則、不規則的網頁區塊,這時候我們會嘗試用各種相對定位、絕對定位、margin 或是 padding 的方式來進行網頁區塊的推擠。
Thumbnail
明明想要某個欄位的寬高為 200px,卻發現自己不知道為什麼怎麼更改都會改不動,又或者寬高更改了,卻沒有辦法與其他元素並列。 上述的狀況,通常都是在不熟悉 HTML display 特性而產生的狀況下才會出現⋯⋯
Thumbnail
與HTML不同,CSS是專門修改網頁內容「樣式」的程式語言,也就是說你沒有辦法透過CSS去新增網頁的文字或是圖片等相關的內容,但你可以透過HTML新增網頁內容後,再使用CSS去修改他的樣式,例如⋯⋯