SCSS / Sass 是甚麼?

更新於 發佈於 閱讀時間約 6 分鐘
筆記僅以個人清楚理解方式記錄

知識來源

Alex 宅幹嘛 👨‍💻從 CSS 到 SASS (SCSS) 超入門觀念引導

前言

SCSS / Sass 是甚麼呢?其實這兩者都是 "預處理器" ,由於瀏覽器只看的懂 CSS ,當我們在寫小專案時可能就是直接 CSS 打一打馬上就完事了,如果是超過20、30頁以上的專案呢?想必一直寫重複的東西就算了,客戶突然要改個顏色,想到要手調 20 頁就開始頭痛了吧... 於是!!! 能節省我們一頁頁手打且能減少重複 CSS 的預處理器就誕生了。


甚麼是預處理器

其實它就像台翻譯機,在執行前進行編譯,最後產生出瀏覽器看得懂的 CSS ,類似翻譯蒟蒻。

SCSS / Sass 差別

最明顯的差異為:

raw-image

Sass

  • 使用縮排
  • 沒有大括號
  • 沒有分號
  • 沒分號跟大括號,較簡潔
  • 沒分號所以不能跟 CSS 一起混

SCSS ( Sass 基本優點都有 )

  • 有大括號
  • 有分號
  • 根本就是CSS,所以可以無痛使用
  • 更易於學習


輔助外掛 Live Server、Live Sass Compiler

以 VS Code 為編輯器

Live Server

有用 VS Code 的使用者基本對此外掛不陌生,它可以在我們本機直接開啟1個伺服器,讓我們前端能所見即所得,我們更改的異動,以下為相關設定。

//​settings.json
"liveSassCompile.settings.formats": [
{
"format": "expanded",
"extensionName": ".css",
"savePath": "/style"
},
{
"extensionName": ".min.css",
"format": "compressed",
"savePath": "/dist/style"
}
],
"liveSassCompile.settings.excludeList": [
"**/node_modules/**",
".vscode/**"
],
"liveSassCompile.settings.generateMap": true,
"liveSassCompile.settings.autoprefix": [
"> 1%",
"last 2 versions"
],
  • liveSassCompile.settings.formats
  • extensionName 副檔名
  • savePath 放置路徑
  • format ( expanded / compressed )
expanded => 未壓縮,手打的樣子 .css
compressed => 壓縮為一行,上線用 .min.css
  • liveSassCompile.settings.excludeList 不編譯指定路徑下的
  • liveSassCompile.settings.generateMap 是否產出 Sourcemap 對應文件
  • liveSassCompile.settings.autoprefix 符合條件就將 CSS 加上瀏覽器支援
  • "> 1%" 使用市佔率 >1%
  • "last 2 versions" 要能支援最新 2 個版本


主要功能

巢狀

能更清楚理解層級脈絡,但要注意不要巢狀過多層,以免影響效能。
.other-service {
display: flex;
justify-content: center;
.service-2B,
.service-2C {
width: 298px;
margin: 0 20px;
text-align: center;
}
}


變數

宣告並賦予數值,可用於統一調整、函式判斷。

基本用法

$body-bg: #FF0000;
$p-color: #18253d;
$p-font-size: 3rem;

body{
background-color: $body-bg;
}

p{
color: $p-color;
font-size: $p-font-size;
}


取用其一

$sizes: 5px 10px 15px 20px;

//設定 padding-top: 5px
h1 {
padding-top: nth($sizes, 1);
}
初始值即為 1,並不像 Array 初始值為 0。
第一個參數為作用的變數( 這邊為$padding-set ),第二個為取用的位置


還有其它方便的方法如以下,來源 Roya's Blog 以及參考 官方詳讀

$theme-colors: (
primary: blue,
danger: red,
);

.bg-primary {
background-color: inspect($theme-colors);
}
$theme-colors: (
primary: blue,
danger: red,
);

.bg-primary {
background-color: map-get($theme-colors, primary);
}


繼承

套用同組CSS,以 % 宣告再以 @extend 引用,這邊%宣告在首行,所以編譯後會彙整在首行,如果%宣告在下方,則會在下方。
raw-image
如果不用%會變成以下,會多寫出被繼承的class
raw-image


函式

能運算就複雜的邏輯
raw-image


混合

繼承很像,但不會彙整。
raw-image


進階使用

raw-image


防止編譯

我們在開發時,多少會採用模組化的方式,一定會有管理變數、函式的模組,要如何防止他們被編譯呢?

_demo.scss 只要前面加底線就可以了哦。


模組導入

模組導入分2種 @import@use 兩者,分別為 整包導入部分導入

@import

raw-image

@use

raw-image


防止偷罵被抓包

我們常常會依靠註解來幫助我們開發時的註記,其實註解也有分,那他們又差別在哪呢?

  • //xxx
  • /* */
raw-image


有發現嗎?用 // 的編譯時會省略,而 /* */ 則無,所以註解要分清楚要給編譯器看還是給團隊看的哦,以免偷罵被抓包了~


  • joker
  • 2024/05/20
留言
avatar-img
留言分享你的想法!
avatar-img
Joker Cat
3會員
21內容數
是一隻喜愛前端勇往直前的霹靂酷樂貓
你可能也想看
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
這節課的學習目標是了解 CSS 的基本語法結構和使用方法。
Thumbnail
這節課的學習目標是了解 CSS 的基本語法結構和使用方法。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
這篇文章分享了 CSS Battle 第 38 題的解法,並提供了相關的技術總結。文章內容包括了使用 flex 排版處理、背景漸層的方法處理等相關技術。透過這篇文章可以學習到如何解決 CSS 切版的問題。
Thumbnail
這篇文章分享了 CSS Battle 第 38 題的解法,並提供了相關的技術總結。文章內容包括了使用 flex 排版處理、背景漸層的方法處理等相關技術。透過這篇文章可以學習到如何解決 CSS 切版的問題。
Thumbnail
不專業分享個人學習 SCSS 的筆記,知識來源為YTB講解,各路大神文章。
Thumbnail
不專業分享個人學習 SCSS 的筆記,知識來源為YTB講解,各路大神文章。
Thumbnail
本篇文章分享了前端工程師在 CSS Battle #166 的解題方式,藉由使用 flex 來進行排版,並提供了相關的技術總結。歡迎一起來學習或練習基礎切版的朋友們和作者互動。
Thumbnail
本篇文章分享了前端工程師在 CSS Battle #166 的解題方式,藉由使用 flex 來進行排版,並提供了相關的技術總結。歡迎一起來學習或練習基礎切版的朋友們和作者互動。
Thumbnail
什麼是 CSS 預處理器 CSS 預處理器是一種工具,使用專門的語法來生成 CSS 樣式表。市面上有許多 CSS 預處理器可供選擇,它們通常會提供一些純 CSS 中沒有的功能,例如變數、混入、巢狀選擇器等。這些功能可以使 CSS 結構更易讀、更易於維護,並提高開發效率。 為什麼使用 CSS 預處
Thumbnail
什麼是 CSS 預處理器 CSS 預處理器是一種工具,使用專門的語法來生成 CSS 樣式表。市面上有許多 CSS 預處理器可供選擇,它們通常會提供一些純 CSS 中沒有的功能,例如變數、混入、巢狀選擇器等。這些功能可以使 CSS 結構更易讀、更易於維護,並提高開發效率。 為什麼使用 CSS 預處
Thumbnail
這是一篇關於CSS Battle系列的文章,介紹瞭如何通過CSS來處理特定圖案的切版與前端工程技術。文章分享了使用grid和radial-gradient()方法來處理特定圖案的解法以及相關技術總結。
Thumbnail
這是一篇關於CSS Battle系列的文章,介紹瞭如何通過CSS來處理特定圖案的切版與前端工程技術。文章分享了使用grid和radial-gradient()方法來處理特定圖案的解法以及相關技術總結。
Thumbnail
這篇文章將解析CSS Battle第136題的解法,主要考驗基本CSS置中排版的能力,並提供了作者的解法與技術總結。透過互動學習,讓想要學習或練習基礎切版的朋友可以參與討論。
Thumbnail
這篇文章將解析CSS Battle第136題的解法,主要考驗基本CSS置中排版的能力,並提供了作者的解法與技術總結。透過互動學習,讓想要學習或練習基礎切版的朋友可以參與討論。
Thumbnail
本文介紹CSS Battle題目#73的解法,涵蓋了分層拆解圖形、使用grid排版、調整樣式等基礎技巧。
Thumbnail
本文介紹CSS Battle題目#73的解法,涵蓋了分層拆解圖形、使用grid排版、調整樣式等基礎技巧。
Thumbnail
您對前端有興趣,對CSS不陌生。CSS新特性前應瞭解基本內容。CSS屬性制定經歷過程,瀏覽器私有前綴及處理,開發者對新特性漸進增強,優雅降級處理,Web標準定義、作用等。
Thumbnail
您對前端有興趣,對CSS不陌生。CSS新特性前應瞭解基本內容。CSS屬性制定經歷過程,瀏覽器私有前綴及處理,開發者對新特性漸進增強,優雅降級處理,Web標準定義、作用等。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News