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
4會員
21內容數
是一隻喜愛前端勇往直前的霹靂酷樂貓
你可能也想看
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
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置中排版的能力,並提供了作者的解法與技術總結。透過互動學習,讓想要學習或練習基礎切版的朋友可以參與討論。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News