# CSS3如何實現旋轉縮放動畫效果
CSS3為網頁動畫提供了強大的支持,其中旋轉(rotate)和縮放(scale)是最常用的動畫效果之一。本文將詳細介紹如何利用CSS3的`transform`和`transition`/`animation`屬性實現這兩種效果。
## 一、基礎概念
### 1. transform屬性
`transform`是CSS3的核心動畫屬性,支持以下常用函數:
- `rotate()`:旋轉元素(單位:deg)
- `scale()`:縮放元素(無單位或百分比)
- `translate()`:移動元素
- `skew()`:傾斜元素
### 2. 動畫實現方式
- **過渡動畫**:通過`transition`實現狀態間的平滑過渡
- **關鍵幀動畫**:通過`@keyframes`定義復雜動畫序列
## 二、旋轉動畫實現
### 1. 基礎旋轉
```css
.box {
width: 100px;
height: 100px;
background: #3498db;
transition: transform 0.5s ease;
}
.box:hover {
transform: rotate(45deg); /* 順時針旋轉45度 */
}
.box-3d {
transform-style: preserve-3d;
transform: rotateX(15deg) rotateY(30deg);
}
@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
.spinner {
animation: spin 2s linear infinite;
}
.element {
transition: transform 0.3s;
}
.element:hover {
transform: scale(1.2); /* 放大到1.2倍 */
}
.element {
transform: scaleX(1.5) scaleY(0.8); /* 寬度放大,高度縮小 */
}
@keyframes pulse {
0% { transform: scale(1); }
50% { transform: scale(1.1); }
100% { transform: scale(1); }
}
.pulse {
animation: pulse 2s infinite;
}
@keyframes rotate-scale {
0% { transform: scale(1) rotate(0deg); }
50% { transform: scale(1.5) rotate(180deg); }
100% { transform: scale(1) rotate(360deg); }
}
.combo {
animation: rotate-scale 3s ease-in-out infinite;
}
.multi-animation {
animation:
scale-up 0.5s ease-out,
rotate 1s 0.5s ease-in-out;
}
@keyframes scale-up {
to { transform: scale(1.2); }
}
@keyframes rotate {
to { transform: rotate(90deg); }
}
.optimized {
transform: translateZ(0);
backface-visibility: hidden;
}
.will-change {
will-change: transform;
}
.loader {
width: 50px;
height: 50px;
border: 5px solid #f3f3f3;
border-top: 5px solid #3498db;
border-radius: 50%;
animation: spin 1s linear infinite;
}
.gallery img {
transition: transform 0.3s;
}
.gallery img:hover {
transform: scale(1.05) rotate(2deg);
box-shadow: 0 10px 20px rgba(0,0,0,0.2);
}
/* 帶前綴的示例 */
.element {
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
}
通過靈活組合這些技術,開發者可以創建出豐富的視覺交互效果,顯著提升用戶體驗。CSS3動畫相比JavaScript實現的優勢在于更好的性能和更流暢的渲染效果。 “`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。