# 第二週 助教課程筆記
###### tags: `2021 網頁切版班`
Quick Link
[助教筆記](https://quip.com/5p2iAxU9Jqhk)
### 檢視重點:找出共同設定—字體、行高、大小
- **預設字體**
- `補充資料連結`
[系統字體介紹](https://wcc723.github.io/design/2018/10/25/fonts/)
[font-family 詳細解說](https://www.oxxostudio.tw/articles/201811/css-font-family.html)
[如何使用 Google Fonts](https://hackmd.io/@YmcMgo-NSKOqgTGAjl_5tg/HJpJk8ABU/https%3A%2F%2Fhackmd.io%2F2nenMilfR7WSJSDI4WzcWA%3Fview)
[CSS 設定中英文不同的問題](https://wcc723.github.io/sass/2014/02/21/font-code-range/)
[CSS 網頁字型 @font-face 使用教學與範例 - G. T. Wang](https://blog.gtwang.org/web-development/css-font-face/)
- 順序:英文字型 > Linux系統 > Mac系統 > Windows > 基礎字體(如果中文字型在前,那麼網頁可能會讀取不到英文的字體,所以用越少的放前面)
```css
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Microsoft JhengHei", Roboto, "Helvetica Neue", Arial, sans-serif;
/* mac, IOS 系統字體 Windows 英文系統字 微軟正黑體 Android 系統字 IOS 系統字 通用字體 */
}
```
- 順序很重要:先讀英文字體,再讀中文字體,只要一讀到有符合的設定,後面的就會直接忽略,越常用放越後面,像是通用字體、或是一些預防措施(防止讀不到),就會放在最後面。
- 如果字型是兩個字(有空格)要記得加上`" "`
- 通用字體:要記得放上 Arial, sams-serif
Q: 如果都讀不到,還是要加上這一串嗎?
→ 還是建議要加,因為算是有個base 的感覺,也不確定之後什麼時候會讀到,像是建築的基地,要打好基礎的概念。
- **補充設計稿上的用法:font**
```css
font: normal normal 300 24px/36px Roboto;
/* font-style font-variant font-weight font-size line-height font-family */
```
不建議用設計稿上一串的設定如下,因為只要有一個錯誤,就容易讓code 設定壞掉的風險。
- **行高設計稿的問題**
1. 用倍數設定:
→ 好處:設計師的設計上會有一定的規律,因此可以不用特別做class 就可以讓不同字體大小的文字,自動排出相對應的行高
→ 建議: 詢問設計師有沒有特定的倍率
→可以用spotlight `^+space` 做個算式 算一下
2. body 設定範例
```css
body{
line-height:1.5; /* 16*1.5=24px
css reset 是 *1 */
}
h1,h2,h3,h4,h5,h6{
line-height:1.2;
}
```
但是要記得在class 寫font-size 要不然lh 會使用預設值,也就是固定24px,而不會隨著文字大小做變動
3. 16px 是瀏覽器規範的預設值(14px 最小)不能太小
- **大小**
- h1 與 **.h1 的差異**
標題標籤有自己的語意,所以使用時是看語意而不是字體大小
```
<h2 class="h2"></h2>
.h1{
fonst-size:
}
.h2{
fonst-size: 32px;
}
.h3{
fonst-size:
}
.h4{
fonst-size:
}
.h5{
fonst-size:
}
.h6{
fonst-size:16px;
}
不建議再繼續寫 h7~~
```
```
.font-sm{
fonst-size:
}
.font-m{
fonst-size:
}
.font-lg{
fonst-size:
}
```
不是共用的大小建議直接寫在區塊 class 內
```
.title{
font-size: 80px;
....
```
- px 與rem 的差異
rem 準取決於最外層的文字大小
全域設定的部分一定要用px,代表這份稿的基數設定是16px,後面class再用rem 算是倍數關係
```css
body{
font-size: 16px;
}
```
→ 之後設計稿只要在body做調整的話,後續設定都不用改,只是改變基數,同樣的倍數關係做調整即可。
→ px 不一定要設計在`body` 但是要設定在 `rem` 之前
→ 例如:如果 f1 是48px 就會寫成 `font-size: 3rem;`
如果共同設定中,除了body 之外 都用px / rem 的話,就要固定沿用其中一項,不可以混用~
**Q: margin 用rem 的話,是以body fz 的文字大小為基礎嗎?**
- **色彩**
- 找出主色 (有明暗變化)→ 使用bootstrap 的命名方式、強調色(次要色、重要、執行關鍵)
```
.text-primary {
color: blue;
}
.bg-light{
background-color: lightblue;
}
```
- 命名不要用顏色命名,用語意化的命名方式
之後如果要調整主色系顏色,就不用回到 html 改class ,只需要調整css 的顏色即可,沒有命名的衝突。
primary → 主色
secondary → 次要色
warning → 警告(黃色)
danger → 危險(紅色)
light →
- **間距**
- `補充資料連結`
[box-sizing 影音](https://courses.hexschool.com/courses/1104597/lectures/23646499)
[偽類和偽元素](https://bit.ly/2TKqUhG)
- 先找出區塊、與元件間的間距規律
→ 好處: 可以從內容與間距的觀察中,找出規律之外,也能從中找出邏輯,從而寫出合適的html 標籤
- 需要觀察的事項:只要倍數沒有餘數,用倍數設定
- 元件之間:8 16
- 元件與外層元件之間: 24
- 區塊之間: 72
- 只要倍數沒有餘數,間距用倍數設定class;反之,如果無法,就寫在該class下面就好,不用另外寫
- 命名的話,用自己的編序,不一定要照間距的倍數去命名(依照順位即可),只要確保class內是用倍數乘除即可
→ 建議把全部的間距列出來之後,再去規劃通用類別的數值
```
m - margin
p - padding
t - top
b - bottom
margin-bottom = mb
/* 使用數值 */
.mb-8{
margin-bottom: 8px;
}
/* 要改數字的時候需連同 class 名稱一起改 */
/* 使用倍數 */
.mb-1{
margin-bottom: 8px;
}
```
共同設定
```
*, *::before, *::after{
box-sizing: border-box;
}
body {
font-size: 16px;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Microsoft JhengHei", Roboto, "Helvetica Neue", Arial, sans-serif;
line-height: 1.5;
}
h1, h2, h3, h4, h5, h6 {
line-height: 1.2;
}
大小
色彩
間距
```
- 課後補充資源
[API](https://bootstrap5.hexschool.com/docs/5.0/utilities/api/)
### CSS 模組化
- **命名完整性:`語意化的重要性`**
- [ ] 不要用emmet 寫法命名,其他人其實會看不懂
- [ ] 不要用流水號
- [ ] 不要用方向,偏主觀,大家的方向可能不同
→ 要語意化,讓自己十年後都看得懂!
- 參考Bootstrap util 的命名方式:
[Bootstrap utils 命名](https://getbootstrap.com/docs/4.0/utilities/flex)
### 作業檢討
- KATA練習
- 履歷Ver1 常見問題
- 推擠方向要一致
- 第一週用不到 flex
- 設計稿上的資訊不一定是正確的
<br>
```
.title h1 {
font: normal normal normal 80px/106px Roboto;
border-bottom: #000000 2px solid;
margin-bottom: 51px;
}
```
### 容器
- **推擠方向的一致性**
→ 好處:class 只要寫一次,不容易搞混,忘記設定
- 什麼是 container?將最重要的內容放在畫面中間(像是一個容器)
```
.container {
width:;
margin: 0 auto;
}
```
- 怎麼算出容器寬度?看設計稿的佈局網格
兩種算法:
```
1) 12*78 + 24*11 = 1200px
2) 1920 - 360*2 = 1200px
```
- container & wrap 差別在哪?
- wrap 比較常包在最外層
```
<div class="wrap">
<div class="profile">
<div class="container">
<h2>...</h2>
</div>
</div>
....
</div>
```