# background 、box-model
###### tags: `html`,`css`
## background-image
可放置照片或漸層顏色顏色,不可放單一顏色
記得要設置長寬
## background-repeat
repeat-x,repeat-y, no-repeat
## background-size
- 改變背景圖片尺寸
--- contain 背景圖片等比例縮放,背景圖片一邊碰到盒子一邊時,另一邊停止縮放
--- cover 背景圖片等比例縮放,背景圖片會填滿整個盒子
--- 也可以設定絕對數值 px、em、rem,百分比
## background-position
- 可以對齊背景圖片的位置
兩個值,第一個值為水平向 x,第二個為垂直向 y
第一個數值 left、center、right => 0%、50%、100%
第二個數值 top、center、bottom => 0%、50%、100%
兩數值也可以是絕對數值,px、em、rem
只設定一個值時,此值為水平,另一值會被設定為 center
```css
.bg-position{
background-position: center center;
}
```
## 縮寫規範
1. background-size 一定要緊接在 background-position 之後,且之間要用斜線分隔(/)
2. 設定 background-position,先設定水平軸向、再設定垂直軸向。
/* background-image、background-color、background-repeat、background-position、background-size */
```css
ex:
.bg-abbr{
background:url("https://picsum.photos/500/500/?random=1") #333 no-repeat center center/cover;
}
```
## 多圖背景規範
- 使用多層背景重疊時,各屬性可以用逗號分隔,圖片出現順序,會由上而下,上方會蓋住下方。
- 第一張背景圖在最上層,第二張第二層,最後一張為最底層。
```css
範例1
.bg-three{
background-image:
url("https://picsum.photos/600/100/?random=1"),
url("https://picsum.photos/600/400/?random=2"),
url("https://picsum.photos/600/100/?random=1");
background-repeat:no-repeat,no-repeat,no-repeat;
background-position:left top,left 100px,left bottom;
範例2
background:
url("https://picsum.photos/600/100/?random=1") no-repeat left top,
url("https://picsum.photos/600/400/?random=2") no-repeat left 100px,
url("https://picsum.photos/600/100/?random=1") no-repeat left bottom;
}
```
## linear-gradient
1. 漸層是背景圖的一種,background-image、background(但不是background-color) 都可以設定漸層。
2. 漸層顏色變化的方向,可以由時針由圓心到針頭方向(為顏色渲染的方向)。
3. 預設角度為 180deg
4. **電腦只有預設螢幕寬,而高度無設定,故在使用to top時,毀讓畫面變成條紋狀,故解決方法為設height:100vh;**
```css
.linear-gradient{
範例一
background-image:linear-gradient(red,yellow,white);
範例二
background:linear-gradient(45deg,red,yellow,white);
範例三
background-image:linear-gradient(to right,green,yellow,white);
}
範例四---圓心放射漸層
background:radial-gradient(white 0%,#ffffaa 10%,pink 100%);
```
> 注意
> background-attachment:fixed
> 背景設定為 background-attachment:fixed,背景圖片的放置位置是以視埠(view port)為基準,也就是會以瀏覽器左上角開始平舖,而不是從個別元素盒子的左上角開始平鋪
# box-model
## margin
- margin為邊距,可以為負值
- padding內距,不可為負值
```
縮寫方式:
四值:top、right、bottom、left(順時針方向去記)
margin:50px 50px 50px 50px;
雙值:第一個值為上下,第二值為左右
margin:50px 50px
單值:上下左右都一樣
margin:50px
```
## border-style
solid、dotted(點線)、dashed(虛線)、double(雙實線)、groove(刻入)、ride(凸出)、insert(嵌入)、outset(浮雕)
```
border: 12px outset rgb(85, 131, 105);
outline外框
outline: 10px dashed rgb(156, 219, 230);
```
## box-shadow
- 水平、垂直、模糊半徑、擴散半徑,inset為內陰影
box-shadow: 0px 0px 60px 30px rgba(114, 113, 113, 0.425),inset 0 0 30px 10px rgb(248, 178, 178);
## 卷軸
overflow:overflow-x、overflow-y:hidden會將超出的內容隱藏,auto會將超出的部分設定卷軸
## box案例
- 盒子不設高,以內容撐高
<iframe src="https://codepen.io/yc-wang/pen/OJNOpeb" width="800" height="600" frameborder="0" style="border:0;" allowfullscreen="" aria-hidden="false" tabindex="0"></iframe>
- 內容若太多超出高度產生溢出,使用overflow:auto即可解決
<iframe src="https://codepen.io/yc-wang/pen/OJNOmPW" width="800" height="600" frameborder="0" style="border:0;" allowfullscreen="" aria-hidden="false" tabindex="0"></iframe>
-margin垂直向,會重疊,大的會吃掉小的,所以盡量用margin-bottom來設垂直間距
<iframe src="https://codepen.io/yc-wang/pen/yLOPbJq" width="800" height="600" frameborder="0" style="border:0;" allowfullscreen="" aria-hidden="false" tabindex="0"></iframe>