or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Syncing
xxxxxxxxxx
Sass
語法
Sass 語法有分兩種 分別為:
SCSS
與Sass
較為大宗的是
SCSS
語法 其寫法與原本的 css 較為相似編譯
在網頁瀏覽器中 都只認識 css 檔案
所以寫好的 SCSS 都需要通過編譯器把它編譯成 css 檔後才能在網頁上使用
編譯的方式有三種:
打包工具(如 webpack 或 gulp) 這裡不提供教學
編輯器內建套件(如 VS Code 的 Live Sass Compiler)
prepros 軟體
VS Code
的Live Sass Compiler
首先開啟
VS Code
編輯器然後點擊左側選單列最下面的
方塊 icon
(這是用來搜尋並安裝套件的)點進去後在搜索框輸入
Live Sass Compiler
安裝它接下來我們將項目資料夾拖曳到
VS Code
編輯器中然後我們在項目資料夾中新增一個
SCSS
資料夾在
SCSS
資料夾中新增一個all.scss
檔案開啟該
all.scss
檔 會發現下方狀態列出現了一個新的按鈕Watch Sass
點下去即可實時編譯(如果看不到下方狀態列 可在最上面的選單中點擊
檢視
選擇外觀
裡面的顯示/隱藏狀態列
)這邊說明一下:
該套件是點擊後下方狀態列有出現 Watching… 就表示啟動
之後每次在 .scss 檔中點擊儲存檔案 就會自動執行編譯 不需要一直點它開關編譯
編譯成功會看到狀態列 Watching… 那邊出現 綠色打勾 SUCCESS
失敗的話檔案會變成紅色標題 並且下方狀態列會跳出一個區塊 顯示問題
另外附上 setting.json 設定:
prepros 軟體
首先到 Prepros 官網 去安裝該軟體
安裝完成後打開該軟體 將項目資料夾拖曳至軟體中
然後我們在項目資料夾中新增一個
SCSS
資料夾在
SCSS
資料夾中新增一個all.scss
檔案 即可接下來當你的
all.scss
編寫後 按下儲存prepros
就會幫你做編譯 並在項目資料夾中生成css
資料夾裡面的
all.css
就是最後我們在網頁中要引入的樣式檔案了先說 這個套件很煩會每隔一段時間跳視窗問你要不要買正式版
但我推薦這個軟體是因為他可以開手機版畫面:
點擊右上角三個 icon 的左邊第一個 icon (兩個小長方形那個 Server)
點擊 Network Preview 用手機掃 QR Code 就可以看到手機版畫面了
SCSS 語法
& 連結符
在完全重複的名稱中可以通過連結符來減少撰寫的代碼
舉例如下:
$ 變數
我們可以在檔案的最上方設定變數 並在下方代碼中使用
舉例如下:
顏色
darken(color,%)
是顏色加深lighten(color,%)
是顏色加亮括號中的第一個參數是顏色 可以傳入變數也可以直接傳入顏色
括號中的第二個參數的 % 則是要加深或加亮的百分比
舉例如下:
匯入
Sass 可以將多個小檔案匯出為一個 css 檔
這也讓我們能更好的管理代碼 將代碼分門別類
比如我們可以把變數單獨做成一支叫
_var.scss
的小檔案(在匯入時 通常變數都放在最上面)
然後通過
@import
來將所有小檔案匯入到all.scss
中小檔案的名稱最前面需加上下底線以做區分 不然編譯器會自動將該檔案編譯成一支 css 檔
加上下底線的目的是讓編譯器知道這是要匯入用的 不須被編譯
要注意的是 在匯入到
all.scss
時 是不需要加上下底線的舉例如下:
css reset
Reset 是清空所有樣式
Normailze 則是保有一些預設樣式(如 li 的 list-style 等)
通常匯入時放在變數與自己撰寫的樣式中間 不要放在自己撰寫的樣式下面
@mixin
當撰寫的樣式中有很多重複的內容時 可以使用
@mixin
首先我們創建一支
_mixin.scss
然後在裡面撰寫重複的內容(
@mixin 自定義名稱 { 樣式代碼 }
)比如今天有很多地方使用到了圖片取代文字
當我們建立好圖片取代文字的
mixin
後 在要使用的地方加上@include 自定義名稱;
這行 即可舉例如下:
@mixin + 變數
在設置 @mixin 時也可以往裡面添加變數
比如某個樣式中同個顏色或尺寸重複使用多次 我們可以寫成這樣
@mixin + @content 撰寫 RWD
以下使用範例說明:
@for
類似 js 中的 for 迴圈 適用於數字的 常見於隔線系統中
使用方式有兩種:
@each
類似 @for 但用於字串 使用時須先定義一個集合變數
該集合變數又稱
Sass map
專門用來搭配 @each 的若要抓取集合中的其中一個 需通過
map-get(集合變數名, 'key值')
如下:
@each 使用方式如下:
@extend
這個技巧適用於多個類名中存在相同樣式時
比如格線系統中的
.col-1 ~ .col-12
在撰寫 @for 時 就可以用到 如下:
CSS/Sass 設計模式
SMACSS
base 通常用來存放基本設定(全站設定) 比如一些值些針對標籤的設定
base
內容可能就是body
html
a
等標籤的樣式設定layout
通常用來存放共用設定(網站設定) 比如頭部底部等在各個頁面都會出現的樣式layout
內容可能就是header
footer
等樣式layout
也可以處理一些共用的東西 在樣式名加上前綴詞用以辨認.l-xxx
or.layout-xxx
module
模組化的意思 比如把按鈕或表單等 做成一個模組化的樣式先設置他的基本樣式 再以基本樣式為基底修改顏色主題、大小等
以
bootstrap
來說btn
是按鈕基本樣式btn-primary
是修改按鈕顏色樣式btn-lg
是修改按鈕大小樣式module 會建議不要直接在樣式中指定標籤名稱(EX:
.header a
會建議改為.header-link
)OOCSS
OOCSS 的原則是 盡量避免使用繼承選擇符(如
.list > a
這種) 它追求的是可以重複使用的樣式 在任何元素上都能套用 不拘泥於要套用在指定容器下的某個元素標籤結構與樣式分離
結構像是
元素的大小、定位
等樣式則是
顏色、背景或邊框
等以 BS4 來說
.btn
就是結構
.btn-primary
則是樣式
容器與內容分離:
容器型元件:如
.grid
.card
form
等內容型元件:如
button
input
progress-bar
等CSS 命名規範
大小駝峰
大駝峰指的是所有英文字的字首都大寫 EX: LastName
小駝峰則是指第一個英文字字首小寫其餘字首大寫 EX: lastName
.bookList
如果寫成.book-list
會讓人以為在.book
裡面有一個列表.book-list
BEM
BEM 指的是 block, element, modifire (即區塊, 元素, 修飾符)
區塊與元素之間用兩個下底線分隔(xxx__xx) 區塊與修飾符 or 元素與修飾符之間則用兩個中線分隔(xxx–xx)
假設 我們有一個
header
它身上有陰影 它裡面有 LOGO那
.header
就是header
的區塊.header--shadow
就是header
的修飾符.header__logo
就是header
的元素再舉例來說 我們有一個
menu
它裡面有三個按鈕 選中的時候有不同的樣式那
.menu
就是menu
的區塊.menu__item
就是menu
的元素.menu__item--active
就是menu
的元素(即.menu__item
)的修飾符自制 grid 格線系統
首先要定義:
每個
col
之間間距為多少 ex:30px
整個
container
最大寬度為多少 ex:1200px
,960px
要將
col
劃分為多少格 ex:12
,16
將間距設為變數
$gutter
, 格線系統共多少格設為變數$gridNum
設計步驟如下: