[CSS] Sass: Mixin & RWD
Sass
Sass (Syntactically awesome style sheets)
- 2007 年發布,用於管理 CSS (wiki)
- 原理:Sass -> 編譯器編譯 -> CSS (瀏覽器還是只看得懂 CSS)
使用 Sass 的好處
- 支援巢狀寫法
- 有變數的概念
Sass 的兩種寫法
Sass 是程式語言,有兩種格式寫法
/* SCSS */
.menu {
ui {...}
li {...}
a {...}
}
/* SASS */
.menu
...
ul
...
li
...
a
...
Scss(較常見):
有
{}
- SCSS 內直接寫 CSS 也是可以的
- 縮排方式:用
{}
Sass (Sassy CSS)
沒有
{}(縮排語法,the indented syntax)
- 縮排方式:用兩個空白(一個 tab)縮排
- 結尾沒有
;,語法中間要加一個空白
編譯
通常透過三種方式編譯:
- 軟體,例如:prepros
- 前端任務/打包工具:gulp, webpack
- 網頁編輯器(e.g. VS Code) 內建的插件,例如:Live Sass Compiler
連結符號 "&"
&代表等同於上一層
原本是這樣寫:
.logo {
background: #ffffff;
a {
color: #000;
}
a:hover {
color: pink;
}
}
使用 &:
.logo {
background: #ffffff;
a {
color: #000;
&:hover {
color: pink;
}
}
}
變數
$varName: value;
$符號開頭:指定 value
warning
編譯器順序是由上至下執行,需要在前面定義變數,後面才能使用
變數格式
- number 數字
- string 字串
- color 顏色
- boolean 布林值
- null 空值
支援運算
$font-m: 16px;
$font-l: $font-m * 1.2;
字串管理
$font-family-base: 'Helvetica, Arial, sans-serif';
$font-family-title: 'monospace';
body {
font-family: $font-family-base;
}
使用 darken, lighten 功能調整顏色
Sass 內建的顏色功能
background-color: darken( #fff, 10%)
background-color: lighten($color, 20%)
- 顏色可以使用變數
$或是色碼# %:變量程度
實際應用範例
主色系
$primary: $blue !default;
$secondary: $gray-600 !default;
$success: $green !default;
$info: $cyan !default;
$warning: $yellow !default;
$danger: $red !default;
$light: $gray-100 !default;
$dark: $gray-800 !default;
link
$link-color: theme-color("primary") !default;
$link-decoration none !default;
$link-hover-color: darken($link-color, 15%) !default;
$link-hover-decoration: underline !default;
檔案管理
Sass import
@import 'FileName';
@import './filepath';

all.scss為主要檔案:通常只會有@import,來 import 其他所有 scss 檔案- import 也需注意先後順序 (dependency)
- 其他檔案檔名需加上下底線
_:代表拿來合併用,不會編譯出 css
優化網頁結構
- 按模組/功能分門別類建檔
- 共通、可延用的檔案可以用於下次的專案
@import 'variable';
@import 'reset'; //reset.css
@import 'mix';
@import 'layout';
//module
@import './module/button';
@import './module/video';
@import './module/form';
@import './module/table';
//page
@import './page/index';
@import './page/member';
@import './page/product';
@import './page/qa';
-
常見的優化結構
-
base:通用的全站設定
- html, a, img
-
layout:不管哪些頁面都會出現的樣板
- header, banner, footer.
-
components (or module):以功能為導向,不以語意為導向
- card, pagination...
-
utilities(目前的趨勢):將常用的樣式都設計成 class,用 class 組出想要的樣式
- font, color, margin...
- e.g. Tailwind
-
SCSS 影音教學補充
Mixin
使用 @mixin 來設定 mixin:
@mixin mixName {
prop1: value1;
prop2: value2;
}
使用 @include 引用設定:
tagName {
@include mixName;
}
範例:
@mixin mixName {
color: blue;
font-size: 24px;
}
.header h1 {
@include mixName;
background: #fff;
}
Mixin 的好處
幫你記住 CSS 技巧,不用因為回想原理而中斷。
我們可以將一些常見的 CSS 技巧寫成 mixin: