[前端]切版起手式 : 用 SCSS 自訂義全域樣式

更新於 發佈於 閱讀時間約 8 分鐘

我在準備進入切版的第一步通常會是設定好全域樣式,以及整理出有哪些共用樣式,也就是把設計稿上規範好的設計系統,例如顏色、間距、字體等等先寫好 CSS,而我自從會 SCSS 後就習慣用這個方式去寫 CSS,透過分成不同檔案、依序載入,日後在修改跟維護上會比較好管理跟減少時間。

視專案大小或需求,決定是否要引入 Bootstrap、tailwind 等框架,單純一點的專案可能自己寫就可以滿足需求。這篇紀錄的是不套用框架,我自己在開版時習慣的步驟與內容,這些內容也會隨著我的經驗隨之調整,同時也歡迎留下你的經驗或看法 !!



步驟一 : 引入 reset.scss

每一個 HTML 標籤元素都有 CSS 預設值,例如預設的margin 、padding …等,這些預設的 CSS ,有些會為網頁設計師做 CSS 排版時帶來不便,所以通常第一步是清除這些預設值,這邊筆者常用的是 meyerweb.com,複製程式碼到專案裡就完成了!

想了解更多可以參考 [第七週] CSS — 起手式及常被問到的問題 這篇文章~


步驟二 : base.scss 放入全站設定

新增 _base.scss 檔案,放入一些全站設定,例如字體、1rem 的大小等,這裡其實因人而異,沒有一定,筆者這邊先放上自己常用的給予參考

*,
*::before,
*::after {
box-sizing: border-box;
}

html {
font-size: 16px;
}

body {
//字型名稱之間如果有空格的話需要用引號包起來,若是中文字型建議用英文名子呈現
// ex.微軟正黑體改成 "Microsoft JhengHei"
font-family: 'Noto Sans TC',
sans-serif; font-size: 1rem; // 16px
line-height: 150%;
}

// img RWD
img {
max-width: 100%;
height: auto;
display: block;
}

// a連結
a {
display: block; text-decoration: none;
}

// sub 因為 css reset 會取消 sub 的樣式
sub {
vertical-align: sub;
}

// container
.container {
max-width: 1120px; //可以自訂義寬度,詳請請見*註一
margin: 0 auto;
padding-left: 16px;
padding-right: 16px;
}

@media screen and (max-width: 376px) {
.container {
max-width: 355px;
margin: 0 auto;
padding-left: 10px;
padding-right: 10px;
}
}

註一 : 在寬度的設定上,瀏覽器的總寬度通常為裝置比例高的 1920px 或 1440px,
但內容寬度不要同樣設成 1920px 或 1440px,可以設定為 1220px 或參考 bootstrap 的
container 寬度 (max-width:1220px),讓容器寬度是一個讓眼睛舒服瀏覽的寬度。​

header 或 footer 若希望是滿版的背景,可以直接在 div 設定 background ,
不用寫 width=100%,因為 div 本身會自適應寬度。


步驟三 : variables.scss 放入共通樣式

新增 _base.scss 檔案,放共通樣式,例如主顏色、次顏色、間距等等。

以下為範例,實際數值需要視每個專案的設計喔。


// scss-docs-start theme-color-variables
$primary: #56C4C5;
$secondary: #FF5D50;
$black: #221E1F;
$white: #FFFFFF;
$gray: #F5F5F5;

// scss-docs-end theme-color-variables
// scss-docs-start box-shadow-variables
$box-shadow: 0px 2px 10px #00000014;

// scss-docs-end box-shadow-variables
$component-active-color: $white ;
$component-active-bg: $primary ;

// stylelint-disable value-keyword-case
$font-family-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"
;
$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !default;
$font-weight-regular: 400;
$font-weight-bold: 700;
$font-size-base: 4px;
$font-m: $font-size-base* 4;//預設字型大小
$h1-font-size: $font-size-base * 1 ;
$h2-font-size: $font-size-base * 12; //48px
$h3-font-size: $font-size-base * 8 ; //32px
$h4-font-size: $font-size-base * 6 ; //24px
$h5-font-size: $font-size-base * 5; //20px
$h6-font-size: $font-size-base * 4.5 ; //18px
$line-height-base: 1.5;


步驟四 : layout.scss 布局管理

這邊的樣式專門設定每一個頁面都有的布局 ex. header footer 等

這邊有個建議作法是在命名 class name 時,可以用個前贅詞示意此為 layout 。

ex. .l-list(O) bookList(X)


步驟五 :module 放入模組化內容

也等同 componets,命名方式可以參考 bootstrap

例如一個按鈕可區分為 :

.btn : 容器相關css

.btn-primary : 樣式相關 css

.btn-lg : 尺寸相關 css

這個概念來自於使用 OOCSS 讓容器與內容分離,未來比較好擴充與維護唷!




以上步驟比較偏向於個人實際做法,非絕對~實際狀況會依每個人工作習慣以及專案而有不同。想了解更多可以再參考以下文章~

使用 @import 讓你 Sass 切分檔案、維護管理更方便!

Sass 的 @import 功能,如何讓scss檔分門別類的管理



謝謝收看 🎉

avatar-img
3會員
21內容數
一位會切版的 UI 設計師, 以介面設計為錨,朝向 UX 、產品思維、數據思維前進。 喜歡透過書探索世界、看見自己。 著迷文字與內心產生共鳴的瞬間, 喜愛哲學、小說、心理、創造力, 喜愛將所思所想落地變成文字。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
YJ 的沙龍 的其他內容
使用 SCSS 來管理 CSS 可以說是每次建置專案的起手式了,加上很常搭配客製化 Bootstrap 來開發,因此決定記錄下引入過程、遇到的錯誤訊息與解決辦法,以節省日後建置時間,如果對你也有幫助,那就太好了。
在專案建置的過程中引入 Bootstrap 並且客製化其樣式已是非常常見的事,並且隨著對 Bootstrap 以及 Sass 了解的加深,發現客製化的幅度可以非常的大跟彈性,因此想記錄這些研究與實作的過程,如果對你也有幫助,那就太好了。
這篇文章更偏向純紀錄性質,方便日後有需要時直接複製相同指令來完成 Bootstrap 與 Sass 的引入,也會做成一個專案起手式的模板放在 Github ,未來在建置新專案時可以透過直接複製專案,來省去前面重複的這過程。
為甚麼寫這邊文章? 這是 2022 年參加六角學院舉辦的公益程式體驗營而生產的系列筆記,整理課程講義、上課筆記與小組討論等文件,內容多為老師與各路大神的精華,只是透過自己的分類方式再次整理,方便日後有需要時快速回顧與應用。
在參加 2022 年六角學院舉辦的公益程式體驗營之後,我認知到一個專業具有就職水準的切版能力不是只是會 html、css 以及一些 css framework 就足夠,魔鬼藏在細節裡,而我想要朝專業級前進。 文章節錄當時的檢核點,作為日後開發的 check list。
使用 SCSS 來管理 CSS 可以說是每次建置專案的起手式了,加上很常搭配客製化 Bootstrap 來開發,因此決定記錄下引入過程、遇到的錯誤訊息與解決辦法,以節省日後建置時間,如果對你也有幫助,那就太好了。
在專案建置的過程中引入 Bootstrap 並且客製化其樣式已是非常常見的事,並且隨著對 Bootstrap 以及 Sass 了解的加深,發現客製化的幅度可以非常的大跟彈性,因此想記錄這些研究與實作的過程,如果對你也有幫助,那就太好了。
這篇文章更偏向純紀錄性質,方便日後有需要時直接複製相同指令來完成 Bootstrap 與 Sass 的引入,也會做成一個專案起手式的模板放在 Github ,未來在建置新專案時可以透過直接複製專案,來省去前面重複的這過程。
為甚麼寫這邊文章? 這是 2022 年參加六角學院舉辦的公益程式體驗營而生產的系列筆記,整理課程講義、上課筆記與小組討論等文件,內容多為老師與各路大神的精華,只是透過自己的分類方式再次整理,方便日後有需要時快速回顧與應用。
在參加 2022 年六角學院舉辦的公益程式體驗營之後,我認知到一個專業具有就職水準的切版能力不是只是會 html、css 以及一些 css framework 就足夠,魔鬼藏在細節裡,而我想要朝專業級前進。 文章節錄當時的檢核點,作為日後開發的 check list。
你可能也想看
Google News 追蹤
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇文章分享了 CSS Battle 第 38 題的解法,並提供了相關的技術總結。文章內容包括了使用 flex 排版處理、背景漸層的方法處理等相關技術。透過這篇文章可以學習到如何解決 CSS 切版的問題。
Thumbnail
這篇文章將介紹如何透過CSS Battle的題目來練習基礎切版技巧。透過一個眼睛圖案的例子,提供了對於 border、outline、border-radius等屬性的調整方式,並分享了一種 100% 的解法。歡迎大家分享自己的作法與作者交流,一起學習成長。
Thumbnail
這篇文章分享了作者對CSS Battle #151題目的解題方式,並強調了圖形解構的重要性。作者提到了基本的排版能力以及實際應用的弧度計算。透過這篇文章,讀者可以學習到CSS切版的技巧,同時也可以分享自己的作法,進行交流討論。
Thumbnail
什麼是 CSS 預處理器 CSS 預處理器是一種工具,使用專門的語法來生成 CSS 樣式表。市面上有許多 CSS 預處理器可供選擇,它們通常會提供一些純 CSS 中沒有的功能,例如變數、混入、巢狀選擇器等。這些功能可以使 CSS 結構更易讀、更易於維護,並提高開發效率。 為什麼使用 CSS 預處
Thumbnail
這是一篇關於CSS Battle系列的文章,介紹瞭如何通過CSS來處理特定圖案的切版與前端工程技術。文章分享了使用grid和radial-gradient()方法來處理特定圖案的解法以及相關技術總結。
Thumbnail
本篇文章分享了 CSS Battle 的題目 #160 的解法,並講解了對於前端工程師基礎切版的重要性和技術總結。
Thumbnail
是的,身為前端工程師的基本功!還是需要時不時拿出來打磨一番! 很多大公司的切版與前端是分開的,但不能因為碰不到就不去理解,假如要系統性的調整樣式,那麼你就一定要懂基礎,就好像你要調整微前端的架構,總不能連包板工具的設定都不會吧! 回到正題,這系列文章每個禮拜三都會更新一題CSS Battle的題
Thumbnail
是的,身為前端工程師的基本功! 還是需要時不時拿出來打磨一番,這系列文章每個禮拜三都會更新一題CSS Battle的題目,歡迎與我交流喔!
Thumbnail
是的,身為前端工程師的基本功!還是需要時不時拿出來打磨一番! 這系列文章每個禮拜三都會更新一題CSS Battle的題目與解法
Thumbnail
您對前端有興趣,對CSS不陌生。CSS新特性前應瞭解基本內容。CSS屬性制定經歷過程,瀏覽器私有前綴及處理,開發者對新特性漸進增強,優雅降級處理,Web標準定義、作用等。
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇文章分享了 CSS Battle 第 38 題的解法,並提供了相關的技術總結。文章內容包括了使用 flex 排版處理、背景漸層的方法處理等相關技術。透過這篇文章可以學習到如何解決 CSS 切版的問題。
Thumbnail
這篇文章將介紹如何透過CSS Battle的題目來練習基礎切版技巧。透過一個眼睛圖案的例子,提供了對於 border、outline、border-radius等屬性的調整方式,並分享了一種 100% 的解法。歡迎大家分享自己的作法與作者交流,一起學習成長。
Thumbnail
這篇文章分享了作者對CSS Battle #151題目的解題方式,並強調了圖形解構的重要性。作者提到了基本的排版能力以及實際應用的弧度計算。透過這篇文章,讀者可以學習到CSS切版的技巧,同時也可以分享自己的作法,進行交流討論。
Thumbnail
什麼是 CSS 預處理器 CSS 預處理器是一種工具,使用專門的語法來生成 CSS 樣式表。市面上有許多 CSS 預處理器可供選擇,它們通常會提供一些純 CSS 中沒有的功能,例如變數、混入、巢狀選擇器等。這些功能可以使 CSS 結構更易讀、更易於維護,並提高開發效率。 為什麼使用 CSS 預處
Thumbnail
這是一篇關於CSS Battle系列的文章,介紹瞭如何通過CSS來處理特定圖案的切版與前端工程技術。文章分享了使用grid和radial-gradient()方法來處理特定圖案的解法以及相關技術總結。
Thumbnail
本篇文章分享了 CSS Battle 的題目 #160 的解法,並講解了對於前端工程師基礎切版的重要性和技術總結。
Thumbnail
是的,身為前端工程師的基本功!還是需要時不時拿出來打磨一番! 很多大公司的切版與前端是分開的,但不能因為碰不到就不去理解,假如要系統性的調整樣式,那麼你就一定要懂基礎,就好像你要調整微前端的架構,總不能連包板工具的設定都不會吧! 回到正題,這系列文章每個禮拜三都會更新一題CSS Battle的題
Thumbnail
是的,身為前端工程師的基本功! 還是需要時不時拿出來打磨一番,這系列文章每個禮拜三都會更新一題CSS Battle的題目,歡迎與我交流喔!
Thumbnail
是的,身為前端工程師的基本功!還是需要時不時拿出來打磨一番! 這系列文章每個禮拜三都會更新一題CSS Battle的題目與解法
Thumbnail
您對前端有興趣,對CSS不陌生。CSS新特性前應瞭解基本內容。CSS屬性制定經歷過程,瀏覽器私有前綴及處理,開發者對新特性漸進增強,優雅降級處理,Web標準定義、作用等。