CSS
===
###### tags:`css`
# 背景
## background
```css=
background-color: red;
/* 背景色,設定顏色的其他形式 rgba(255, 99, 71, 0.1), #ff6347 */
background-image: url("paper.gif"); /* 背景圖 */
background-repeat: no-repeat; /* 背景重複 */
/* 可使用的值
* no-repeat 不重複,圖片只顯示一次
* repeat-x 水平重複
* repeat-y 垂直重複
* repeat 水平垂直皆重複
* space 與repeat相同但有空白將圖做切分
* round 用完整的圖形將畫面塞滿且沒有間距
*/
background-position: left center; /* 背景圖片位置 */
/* 水平方向: left,center,right
* 垂直方向: top,center,bottom */
background-attachment: scroll;
/* scroll 預設值 背景圖會隨著外圍頁面滾動而移動
* fixed 圖片位置不動
* local 自己的區塊內如果滾動時,背景圖也會跟著移動 */
/*備註: background-attachment 值可疊加使用造成不同效果*/
background-clip: border-box;
/* 限制背景的範圍 border-box; padding-box; content-box;*/
background-size: 300px 100px; /* 寬,高*/
background-size: auto; /*瀏覽器自己決定,一般為0px*/
background-origin: content-box;
/*定位背景圖片的原點位置 border-box; padding-box; content-box;*/
background:lightblue url("img_tree.gif") no-repeat fixed center;
/*一次使用多個屬性的範例寫法,插入的語法依序是
* background-color
* background-image
* background-repeat
* background-attachment
* background-position
* */
```
# DEMO
# 邊框(border),邊界(margin),間距(padding)
![](https://i.imgur.com/MVf0edk.png)
## border
```css=
border: 5px solid red;
/* border-width border-style border-color*/
border-width: 5px 20px; /* 上下距離皆為5px, 左右距離皆為20px */
border-width: 25px 10px 4px 35px; /* 上距離25px, 右距離10px, 下距離4px, 左距離35px */
border-style: dotted;
/* 各種邊框的樣式 */
/* dotted dashed solid double groove ridge inset outset none hidden */
border-style: dotted dashed solid double;
/* 邊框樣式可每個方向都不同 */
/* 可以控制4個方向個別的樣式 */
border-top-style: dotted;
border-right-style: solid;
border-bottom-style: dotted;
border-left-style: solid;
border-color: #ff0000; /* rgb(255, 0, 0) */
border-color: red green blue yellow; /* 上顏色紅, 右顏色綠, 下顏色藍, 左顏色黃 */
/* 可以控制4個方向個別的顏色 */
border-top-color: blue;
border-right-color: green;
border-bottom-color: red;
border-left-color: blue;
border-left: 6px solid red;
border-bottom: 6px solid red;
border-collapse: collapse;
/* separate 預設值,邊框彼此間分開
* collapse 邊框合併為單一邊框
* inherit 繼承自父層的 border-collapse 屬性值。 */
border-radius: 5px; /*可填1-4個參數*/
border-top-left-radius: 4px 2px;
border-top-right-radius: 3px 4px;
border-bottom-right-radius: 6px 2px;
border-bottom-left-radius: 3px 4px;
/* 可以控制4個位置個別圓弧的比例 */
border-image: url('/media/examples/border-diamonds.png') 30;
```
## margin
```css=
margin: 25px 50px 0px 100px;
/* 歸0也可以用auto */
margin-top: 100px;
margin-bottom: 100px;
margin-right: 150px;
margin-left: 80px;
```
## padding
```css=
padding: 25px 50px 75px 100px;
padding-top: 50px;
padding-right: 30px;
padding-bottom: 50px;
padding-left: 80px;
```
## outline
![](https://i.imgur.com/cTymydh.png)
```css=
/*備註:outline和margin的差異是,outline是可設定border外的線和空間,margin只有空間*/
/* 最外層 outline 中間 border 內容 content */
outline: 5px solid yellow;
outline-style: dotted;
/* dotted dashed solid double groove ridge inset outset none hidden */
outline-color: red; /* #ff0000 rgb(255, 0, 0) */
outline-width: thin;
/* thin 1px medium 3px thick 5px */
outline-offset: 15px;
/* outline到border的距離 */
```
# DEMO
# 長寬
## width & height
```css=
height: 100px;
width: 500px;
/* 隨著畫面縮放 物件框的最大與最小值 */
max-width: 500px;
max-height: 500px;
min-width: 500px;
min-height: 300px;
```
# 位置
## position
```css=
position: relative;
top: 10px;
bottom: 10px;
left: 10px;
right: 10px;
/* relative 從原本位置調整該物件的位置 */
/* absolute 固定此物件在畫面的位置 */
/* static 預設的狀態 top right bottom left z-index 屬性值無法影響 */
/* fixed 依照(viewport)視區調整該物件的位置,且不會離開原來所在的(gap) */
/* sticky 碰到滾動條所在的位置會按照調整的參數,保持在參數設定的位置 */
```
# 位移和變形
## transform
```css=
/* transform */
transform: translate(50px, 100px);
transform: rotate(20deg);
transform: scale(0.5) translate(-100%, -100%);
/* matrix 變形矩陣,用6個數字同時做到位移,旋轉,縮放
* translate 移動
* scale 縮放
* rotate 旋轉
* skew 傾斜
* 可混用
* */
```
# 文字
## text
```css=
color: green; /* 字體顏色 */
text-align: center;
/* left 靠左
* center 置中
* right 靠右
* justify 左右對齊本文
* inherit 繼承父層的text-align屬性
*/
vertical-align: top;
/* 圖片對齊
* baseline
* sub
* super
* text-top
* text-bottom
* middle
* bottom
*/
direction: rtl;
/* 文字顯示的方向
* ltr 由左往右
* rtl 由右往左
* initial 設為預設狀態
* inherit 繼承父層的direction屬性設定
* */
text-decoration: none;
/* 文字底線
* overline 上底線
* line-through 刪除線
* underline 下底線 */
text-decoration: underline overline wavy blue;
/* text-decoration-line (可單個可多個)
* text-decoration-style (單一個)
* text-decoration-color (單一個) */
text-decoration-thickness: auto;
/*
* 底線粗細 auto from-font 0.1em 3px 10%
* */
text-transform: uppercase;
/* uppercase 文字全大寫
* lowercase 文字全小寫
* capitalize 首字大寫,其他小寫
* */
text-indent: 50px;
/* 首行縮排距離 */
letter-spacing: 3px;
/* 字元間距 -3px*/
line-height: 0.8;
/* 行距 */
word-spacing: 10px;
/* 單字距離 */
white-space: nowrap;
/* 處理元素內的空白字元
* normal
* nowrap
* pre
* pre-wrap
* pre-line
* */
text-shadow: 2px 2px 5px red;
/* 文字陰影
* 位移x軸 位移y軸 模糊半徑 顏色
* */
font: italic small-caps bold 12px/30px Georgia, serif;
/* font-style font-variant font-weight font-size/line-height font-family */
font-family: Tahoma, Verdana, sans-serif, monospace;
/* 如果第一個文體找不到,就自動使用第二個以此類推
* 順序是 字體,通用字形
* */
font-style:normal;
/* normal italic oblique */
font-weight:normal;
/* normal bold */
font-variant: normal;
/* normal small-caps */
font-size: 2.5em;
/* 10vw 1.875em 40px */
display: block;
/* none block inline-block inline */
/* inline 所有的內容會成一行,但當內容超過原始設定的寬則會隨內文延長 */
/* inline-box 寬高都可以被控制,且具有float:left的效果 */
/* box 寬高不會隨內文而改變,且無法讓任何物件出現在右邊,即使使用float也不行 */
/* 參考網址: https://www.digitalocean.com/community/tutorials/css-display-inline-vs-inline-block */
/* 很多參數不足備載,只列出常用的 */
visibility: hidden;
/*
hidden 保持物件原本的位置,隱藏不顯示
visible
collapse 隱藏表格行或列,且不占用任何空間
*/
opacity: 0.3; /* 透明度 */
/* 可引用google font的文字 */
/* <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Sofia&effect=fire"> */
```
# 超連結
```css=
a:link {color: red;}
/*未訪問過 */
a:visited {color: green;}
/*已訪問過 */
a:hover {color: hotpink;}
/*游標蓋在上面 */
a:active {color: blue;}
/*點擊 */
a:hover, a:active {background-color: red;}
/* 多種觸發方式,使用同個樣式 */
a.four:link {color: #ff0000;}
/* 超連結內有個class為four的物件當未訪問過的時候 */
```
# 列表
## list-style
```css=
/* 清單 ul li ol*/
ul.a {
list-style-type: circle;
/* 標記樣式 */
list-style-image: url('sqpurple.gif');
/* 將標記換成指定圖片 */
list-style-position: outside;
/* inside 將標記顯示在內容內或外 */
list-style: square inside url("sqpurple.gif");
/* list-style-type list-style-position list-style-image */
}
```
# 區塊
## box-sizing
```css=
box-sizing:content-box;
/* 可以使用此屬性來模擬不正確支持CSS盒子模型規範的瀏覽器 */
/* content-box border-box inherit;*/
```
# 動畫
## animation
``` css=
img {
/* CSS Animations */
/* @keyframes */
animation-name: example;
animation-duration: 4s;
animation-delay: -2s;
animation-iteration-count: 2; /* infinite*/
animation-direction: reverse; /* alternate alternate-reverse */
animation-timing-function:;
/* linear ease ease-in ease-out ease-in-out */
animation-fill-mode:none; /* none forwards backwards both */
animation: example 5s linear 2s infinite alternate;
}
```
## transition
``` css=
/* transition 轉場特效,輔助animation用 */
div {
width: 100px;
height: 100px;
background: red;
transition: width 2s;
/* 可以包含一個或多個轉場設定,每一項設定都以逗點分開 */
/* property name | duration | timing function | delay */
transition-property: all;
transition-duration: 2s;
transition-delay: 1s;
}
#div1 {transition-timing-function: linear;}
#div2 {transition-timing-function: ease;}
```
# 浮動
## float / clear
``` css=
img {
float: right; /* left right none inherit */
clear: both;
}
```
# 游標
## cursor
``` css=
a:hover {
cursor: help;
/* 非常多樣式,不一一列出 */
}
```
###
```css=
/* table 補充屬性 RWD
* border
* border-collapse
* border-spacing
* caption-side
* empty-cells
* table-layout */
resize: none;
/* 使用者可以自行調整元素的大小 */
overflow: visible;
/* 當內容太多時,元素要對應的方式 */
/* hidden 超出的部分不顯示
* scroll 產生卷軸在元素內容中
* auto
* inherit*/
/* CSS 選取器分為五個種類
Simple selectors,
Combinator selectors,
Pseudo-class selectors,
Pseudo-elements selectors,
Attribute selectors */
/* Combinator selectors */
div p {background-color: yellow;}
/* 指定div標籤內全部p標籤的元素 */
div > p {background-color: yellow;}
/* 指定全部p標籤父標籤為div的元素 */
div + p {background-color: yellow;}
/* 指定第一個div標籤內全部p標籤的元素 */
div ~ p {background-color: yellow;}
/* 指定出現過p標籤包在div標籤後裡面的p標籤 */
/* Pseudo-class selectors */
a:active {color: #0000FF;}
a.highlight:hover {color: #ff0000;}
/* highlight 是class名稱 */
div:hover {background-color: blue;}
div:hover p{background-color: blue;} /* 當div被滑鼠蓋住 作用在裡面的p標籤上 */
p:first-child {color: blue;} /*作用在第一個P標籤上*/
p i:first-child {color: blue;} /*作用在P標籤裡面第一個I標籤上*/
p:first-child i {color: blue;} /*作用在P標籤裡面所有的I標籤上*/
.third span:nth-of-type(2n+1) {background-color: lime;}
/* nth-child 讓等差數列的資料呈現的css能有規律地不同 */
q:lang(no) {quotes: "~" "~"; /*將特定文字轉換成另一個*/}
/* 根據語言屬性來執行CSS屬性*/
/* <p>Some text <q lang="no">A quote in a paragraph</q> Some text.</p> */
/* Pseudo-elements selectors */
h1::before {content: url(smiley.gif);} /* 標籤前使用屬性 */
input:focus{outline: none; border: 5px #faa solid;} /*當輸入提示在上面時觸發*/
p::before {content: attr(data-foo) " ";} /* attr 可以取得屬性值 */
/* Attribute selectors */
a[target=_blank] {background-color: yellow;} /* 當超連結有這個屬性設定相同就套用 */
/* <a href="http://www.disney.com" target="_blank">disney.com</a> */
[title~="flower"] {border: 5px solid yellow;} /* 當title屬性內有flower這個詞就套用 */
[class|="top"] {background: yellow;} /*當class中的top為一個獨立的詞就會套用 ex: top top-text 但像 toptext這種不套用*/
[class$="test"] {background: yellow;} /*當class內的結尾為test就會套用*/
[class*="te"] {background: yellow;} /*當class內含有te的字就會套用*/
input[type="button"] {
width: 120px;
margin-left: 35px;
display: block;
}
```
```css=
/*額外補充*/
/*內鍵記數器範例*/
body {
counter-reset: section;
}
h2::before {
counter-increment: section;
content: "Section " counter(section) ": ";
}
/* Responsive layout - makes the three columns stack on top of each other instead of next to each other */
@media screen and (max-width: 600px) {
.column.side, .column.middle {
width: 100%;
}
}
/* units */
/* Multiple Columns */
/* CSS Variables */
/* CSS Flex */
/* CSS Grid */
```
``` html=
<!--添加CSS的三種方式
1.外部(External) CSS
2.內部(Internal) CSS
3.單行(Inline) CSS -->
預處理器 sass lesscss stylus postcss
盒子模型(Box Model)
<!-- 補充文件 - 偽類和偽元素 -->
<!-- 偽類總表 -->
<!-- https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Selectors/Pseudo-classes_and_pseudo-elements#%E4%BC%AA%E7%B1%BB%EF%BC%88Pseudo-class%EF%BC%89 -->
<!-- https://www.w3schools.com/css/css_pseudo_classes.asp -->
<!-- https://www.w3schools.com/css/css_pseudo_elements.asp -->
<!-- 偽元素中也可搭配 attr ,從原本的 Element 獲取屬性的資料 -->
<!-- 偽類能夠在特定動作時改變 DOM 的 CSS 樣式 ex: :hover -->
<!-- 偽元素則是基於原有的 DOM ,創建另一個可設定不同 CSS 的 DOM 屬性 ex: ::after ::before -->
<!-- icon -->
<!-- <script src="https://kit.fontawesome.com/a076d05399.js"></script> -->
<i class="fas fa-heart"></i> -->
<!-- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> -->
<i class="glyphicon glyphicon-user"></i>
<!-- 常見的範例 -->
導覽列 Navigation Bars
下拉選單 Dropdowns
圖片畫廊 image gallery
icon版導覽列 Image Sprites
響應式表單 Responsive Form
Tooltip
Hoverable Buttons
Simple Pagination
<!-- 網頁範例 -->
header
Navigation Menu
Content Main Content Content
```
# RWD響應式網頁
``` css=
<!-- css RWD -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
```
參考資源
1. [金魚都能懂的CSS必學屬性](https://ithelp.ithome.com.tw/articles/10248942)
2. [w3school](https://www.w3schools.com/)
3. [Wibibi網頁設計教學百科](https://www.wibibi.com/)
---