CSS3是當前Web開發中最流行的CSS語言之一,提供了許多新的特性和功能,使得網頁設計更加靈活和多樣化。本手冊將介紹CSS3的各種功能和用法,包括選擇器、樣式、布局、動畫和交互等。
## 選擇器
CSS3選擇器提供了一種更靈活的選擇方式,可以更精細地控制元素的樣式。以下是一些常用的CSS3選擇器:
### 類選擇器
類選擇器是一種基于屬性選擇器的高級形式,可以根據選擇器屬性選擇多個元素。例如:
```css
/* 選擇所有p元素 */
color: red;
/* 選擇第一個p元素,并將其寬度設置為100像素 */
p:first-child {
width: 100px;
### 偽類選擇器
偽類選擇器是一種基于屬性選擇器的高級形式,可以根據選擇器屬性選擇多個元素,并根據不同的偽類形態改變元素的形狀和樣式。例如:
```css
/* 選擇所有#header元素 */
#header {
background-color: blue;
color: white;
/* 選擇第一個#header元素,并將其背景顏色設置為綠色 */
#header:first-child {
background-color: green;
### 條件樣式選擇器
條件樣式選擇器是一種基于條件選擇器的選擇器,可以根據條件值自動調整元素的樣式。例如:
```css
/* 選擇所有
元素,如果元素存在,則其字體大小為3像素 */
p:hover + i {
font-size: 3px;
/* 選擇第一個
元素,如果元素不存在,則其字體大小為4像素 */
p:hover:not(i):first-child {
font-size: 4px;
## 樣式
CSS3提供了更多的樣式功能,可以更加精細地控制元素的樣式,包括顏色、字體、邊框、背景等等。以下是一些常用的CSS3樣式:
### 顏色
CSS3提供了顏色屬性,可以根據指定的RGB值或CSS顏色對象設置元素的顏色。例如:
```css
/* 設置文本顏色為紅色 */
color: red;
/* 設置背景顏色為藍色 */
body {
background-color: blue;
### 字體
CSS3提供了字體屬性,可以根據指定的字體名稱或字體樣式設置元素的字體樣式。例如:
```css
/* 設置文本字體為微軟雅黑 */
font-family: 微軟雅黑;
font-size: 20px;
/* 設置背景字體為黑體,并使其看起來比正文更清晰 */
body {
font-family: 黑體;
font-size: 16px;
background-color: #f00;
### 邊框
CSS3提供了邊框屬性,可以根據指定的寬度和高度設置元素的邊框樣式。例如:
```css
/* 設置文本框邊框寬度為2像素 */
border-width: 2px;
/* 設置背景框邊框寬度為4像素,高度為20像素 */
body {
border-width: 4px;
border-style: solid;
border-bottom-color: #f00;
height: 20px;
### 背景
CSS3提供了背景屬性,可以根據指定的背景圖像或CSS顏色對象設置元素的背景顏色和樣式。例如:
```css
/* 設置背景圖像為地球圖像,并使其居中 */
body {
background-position: center;
/* 設置背景顏色為黑色,并將其居中 */
body {
background-color: #000;
background-position: center;
## 布局
CSS3提供了更多的布局功能,可以更加靈活地控制元素的位置和大小。以下是一些常用的CSS3布局:
### 層疊布局
層疊布局是一種基于布局對象的布局方式,可以使多個元素疊加在一起,實現復雜的布局效果。例如:
```css
/* 設置第一個元素位于第二個元素之上 */
.parent {
display: flex;
flex-wrap: wrap;
/* 設置第二個元素位于第一個元素之上 */
.parent:first-child {
display: flex;
flex-wrap: wrap;
/* 設置第三個元素位于第二個元素之上 */
.parent:last-child {
display: flex;
flex-wrap: wrap;
### 垂直布局
垂直布局是一種基于布局對象的布局方式,可以使元素垂直排列,實現垂直布局效果。例如:
```css
/* 設置第一個元素位于第二個元素之下 */
.parent {
display: flex;
flex-direction: column;
/* 設置第二個元素位于第一個元素之下 */
.parent:first-child {
display: flex;
flex-direction: column;
/* 設置第三個元素位于第二個元素之下 */
.parent:last-child {
display: flex;
flex-direction: column;
### 水平布局
水平布局是一種基于布局對象的布局方式,可以使元素水平排列,實現水平布局效果。例如:
```css
/* 設置第一個元素位于第二個元素之上,并使其垂直居中 */
.parent {
display: flex;
flex-direction: row;
align-items: center;
/* 設置第二個元素位于第一個元素之上,并使其水平居中 */
.parent:first-child {
display: flex;
flex-direction: row;
align-items: center;
/* 設置第三個元素位于第二個元素之上,并使其水平居中 */
.parent:last-child {
display: flex;
flex-direction: row;
align-items: center;
### 彈性盒子布局
彈性盒子布局是一種基于彈性盒子模型的布局方式,可以根據元素的需要自動調整其大小和位置。例如:
```css
.parent {
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
.child {
width: 200px;
height: 200px;
background-color: blue;
## 動畫
CSS3提供了更多的動畫功能,可以創建更加豐富和有趣的動畫效果。以下是一些常用的CSS3動畫:
### 偽粒子動畫
偽粒子動畫是一種基于偽粒子模型的動畫效果,可以使元素看起來像是從邊緣逐漸展開或收縮的。例如:
```css
.parent {
position: relative;
width: 200px;
height: 200px;
.parent:before,
.parent:after {
content: "";
position: absolute;
width: 0;
height: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-bottom: 75px solid green;
.parent:before {
left: 100px;
.parent:after {
left: -100px;
### 過渡動畫
過渡動畫是一種基于過渡效果創建的動畫效果,可以使元素之間過渡一種平滑的樣式。例如:
```css
.parent {
position: relative;
width: 200px;
height: 200px;
.parent:before,
.parent:after {
content: "";
position: absolute;
width: 0;
height: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-bottom: 75px solid green;
.parent:before {
left: 100px;
top: 0;
border-width: 50px 0 50px 100px;
animation: pulse 1s infinite;
.parent:after {
left: -100px;
top: 0;
border-width: 50px 0 50px 100px;
animation: pulse 1s infinite;
@keyframes pulse {
0% {
transform: translateY(0);
100% {
transform: translateY(100px);
### 旋轉動畫
旋轉動畫是一種基于旋轉效果創建的動畫效果,可以使元素圍繞中心點旋轉一定角度。例如:
```css
.parent {
position: relative;
width: 20;
height: 0;
.parent:before {
content: "";
position: absolute;
left: 0;
top: 0;
width: 20;
height: 0;
border-left: 0 10 0 10 ;
border-right: 0 10 0 0 ;
transform: rotateY(0deg);
.parent:hover:before {
transform: rotateY(18deg);