4 CSS的 變換、過渡與動畫

CSS3引入了變換、過渡和動畫特性,使得網頁可以呈現出豐富的視覺效果和交互體驗。通過這些新特性,開發者可以創建復雜的動畫效果,而不需要使用JavaScript。

4.1 變換(Transforms)

變換允許開發者對元素進行旋轉、縮放、傾斜和平移操作。這些變換可以單獨使用,也可以組合使用。

4.1.1 旋轉(Rotate)

rotate 變換用于旋轉元素。可以指定旋轉的角度,正值表示順時針旋轉,負值表示逆時針旋轉。

/* 旋轉元素45度 */
.element {transform: rotate(45deg);
}

4.1.2 縮放(Scale)

scale 變換用于縮放元素。可以指定水平和垂直方向的縮放比例。

/* 縮放元素為原始大小的兩倍 */
.element {transform: scale(2);
}/* 水平縮放兩倍,垂直縮放一半 */
.element {transform: scale(2, 0.5);
}

4.1.3 平移(Translate)

translate 變換用于平移元素。可以指定水平和垂直方向的位移。

/* 水平平移50px,垂直平移100px */
.element {transform: translate(50px, 100px);
}

4.1.4 傾斜(Skew)

skew 變換用于傾斜元素。可以指定水平和垂直方向的傾斜角度。

/* 水平傾斜30度 */
.element {transform: skewX(30deg);
}/* 垂直傾斜30度 */
.element {transform: skewY(30deg);
}/* 同時進行水平和垂直傾斜 */
.element {transform: skew(30deg, 20deg);
}

4.1.5 組合變換

可以將多種變換組合在一起使用。

/* 平移元素50px并旋轉45度 */
.element {transform: translate(50px) rotate(45deg);
}

4.2 過渡(Transitions)

過渡允許元素屬性的變化在一段時間內平滑進行,提供了流暢的視覺效果。

4.2.1 定義過渡

transition 屬性用于定義元素屬性變化時的過渡效果。

/* 定義所有屬性的過渡效果,持續時間為0.3秒,使用ease緩動效果 */
.element {transition: all 0.3s ease;
}

4.2.2 指定過渡屬性

可以指定特定屬性的過渡效果。

/* 定義背景顏色和寬度的過渡效果 */
.element {transition: background-color 0.3s ease, width 0.3s ease;
}

4.2.3 過渡效果示例

通過過渡效果改變背景顏色。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>過渡效果示例</title>
<style>
.box {width: 100px;height: 100px;background-color: red;transition: background-color 0.5s ease;
}.box:hover {background-color: blue;
}
</style>
</head>
<body>
<div class="box"></div>
</body>
</html>

4.3 動畫(Animations)

CSS3動畫允許開發者通過定義關鍵幀動畫來創建復雜的動畫效果。

4.3.1 @keyframes規則

@keyframes 規則用于定義動畫。關鍵幀指定了動畫過程中不同時間點的樣式。

@keyframes example {0% {background-color: red;left: 0px;}100% {background-color: yellow;left: 100px;}
}

4.3.2 應用動畫

animation 屬性用于將動畫應用到元素上。

/* 應用動畫,持續時間為5秒,循環播放 */
.element {animation: example 5s infinite;
}

4.3.3 動畫屬性

  • animation-name: 動畫名稱,與@keyframes定義的名稱一致。
  • animation-duration: 動畫持續時間。
  • animation-timing-function: 動畫緩動效果,如easelinear等。
  • animation-delay: 動畫開始前的延遲時間。
  • animation-iteration-count: 動畫循環次數,可以是數值或infinite
  • animation-direction: 動畫播放方向,可以是normalreversealternate等。

4.3.4 動畫示例

創建一個移動和改變背景顏色的動畫。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>動畫示例</title>
<style>
@keyframes moveAndChange {0% {background-color: red;transform: translateX(0);}50% {background-color: yellow;transform: translateX(100px);}100% {background-color: green;transform: translateX(200px);}
}.box {width: 100px;height: 100px;background-color: red;animation: moveAndChange 4s infinite alternate;
}
</style>
</head>
<body>
<div class="box"></div>
</body>
</html>

4.3.5 動畫性能優化

為了確保動畫流暢運行,可以采取以下措施優化動畫性能:

  1. 使用硬件加速:通過使用transformopacity屬性,可以利用GPU加速渲染。
  2. 簡化動畫:避免過多復雜的動畫效果,減少動畫幀數。
  3. 控制動畫數量:避免同時運行過多動畫,確保動畫的響應速度。
  4. 使用適當的緩動函數:選擇適當的緩動函數,使動畫更加自然流暢。

通過本章的學習,讀者應該對CSS3中的變換、過渡與動畫有一個深入的了解,并能夠在實際開發中靈活應用這些特性。接下來,我們將深入探討CSS3中的彈性布局和網格布局。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/17093.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/17093.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/17093.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python考試復習--day2

1.出租車計費 mile,waitmap(int,input().split(,)) if mile<3:money13wait*1 elif mile>3 and mile<15:money13(mile-3)*2.3wait*1 else:money1312*2.3(mile-15)*2.3*(10.5)wait*1 print({:.0f}.format(money)) 【知識點1】&#xff1a; map() 函數 【知識點1】&…

代碼隨想錄算法訓練營第五十一天|300.最長遞增子序列,674. 最長連續遞增序列,718. 最長重復子數組

300.最長遞增子序列 dp數組的含義為dp[i]表示字符串以第i位置為末尾的最長遞增子序列的長度。 for (int i 1; i < nums.size(); i) {for (int j 0; j < i; j) {if (nums[i] > nums[j]) dp[i] max(dp[i], dp[j] 1);}if (dp[i] > result) result dp[i]; // 取…

設計模式 20 中介者模式 Mediator Pattern

設計模式 20 中介者模式 Mediator Pattern 1.定義 中介者模式&#xff08;Mediator Pattern&#xff09;是一種行為型設計模式&#xff0c;它通過封裝對象之間的交互&#xff0c;促進對象之間的解耦合。中介者模式的核心思想是引入一個中介者對象&#xff0c;將系統中對象之間…

Vue中,點擊提交按鈕,路由多了個問號

問題 當點擊提交按鈕是路由多了問號&#xff1a; http://localhost:8100/#/ 變為 http://localhost:8100/?#/原因 路由中出現問號通常是由于某些路徑或參數處理不當造成的。在該情況下&#xff0c;是因為表單的默認行為導致的。提交表單時&#xff0c;如果沒有阻止表單的默…

React Router v6:路由管理的最新進展

React Router v6 是 React 應用程序路由管理的一個重大更新&#xff0c;它引入了許多改進和簡化&#xff0c;包括對嵌套路由的更友好處理&#xff0c;以及對鉤子函數的使用。 2500G計算機入門到高級架構師開發資料超級大禮包免費送&#xff01; 1. Routes 重構 在 v6 中&…

Kubernetes數據存儲

1. 數據存儲 容器的生命周期可能很短&#xff0c;會被頻繁地創建和銷毀。那么容器在銷毀時&#xff0c;保存在容器中的數據也會被清除。這種結果對用戶來說&#xff0c;在某些情況下是不樂意看到的。為了持久化保存容器的數據&#xff0c;kubernetes引入了Volume的概念。 Volu…

HTML-JavaWeb

目錄 1.標題排版 2.標題樣式 ?編輯 ?編輯 小結 3.超鏈接 4.正文排版 ?編輯?編輯?編輯5.正文布局 6.表格標簽 7.表單標簽 8.表單項標簽 1.標題排版 ● 圖片標簽 :< img> src:指定圖像的ur1(絕對路徑/相對路徑) width:圖像的寬度(像素/相對于父元素的百…

【AD21】文件的整理

當所有文件輸出完成后&#xff0c;需要對不同的文件去做一個整理&#xff0c;方便后續工作的交接。 在項目工程文件夾下新建名稱為BOM、SMT、PRJ、Gerber和DOC的文件夾。 BOM文件夾存放BOM表發給采購人員。SMT文件夾存放裝配圖文件和坐標文件發給貼片廠。PRJ文件夾存放工程文件…

C++基礎:多態

多態相關 多態繼承重寫父類的虛函數多態的體現,父類的引用指向子類對象的空間虛函數可以實現,也可以不實現,不實現必須要有初始值存在未定義的虛函數的類為抽象類.抽象類不能實例化對象;(animal父類不能實例化對象)如果父類中的函數非虛函數,則會調用父類中的函數//多態的體現…

匯凱金業:紙黃金和實物黃金的價格有什么區別

紙黃金和實物黃金的價格主要受到全球黃金市場行情的影響&#xff0c;二者的基礎價格并無太大差異&#xff0c;但在具體交易時&#xff0c;可能會存在一些價格上的區別&#xff0c;這些差異主要來自以下幾個方面&#xff1a; 交易費用與管理費&#xff1a;紙黃金交易通常需要支…

python xls格式轉為xlsx格式

python 兩個表格字段列名稱值&#xff0c;對比字段差異-CSDN博客 import os import win32com.clientdef xls_to_xlsx(file_path, excel):"""將指定的xls文件轉化為xlsx格式file_path: 文件路徑excel: 代表Excel應用程序"""# 打開原始文檔workbo…

【Java】IdentityHashMap 的使用場景

文章目錄 前言1. Druid 應用場景2. IdentityHashMap 特性3. IdentityHashMap 同步化4. IdentityHashMap 處理key為空值后記 前言 最近有興趣看一下 Druid 連接池怎么做連接管理的&#xff0c;看到一個類 IdentityHashMap &#xff0c;這里記錄一下使用場景。 1. Druid 應用場…

代碼隨想錄算法訓練營第36期DAY41

DAY41 動態規劃理論基礎 還差閆氏分析法沒學完。見B站收藏夾。 前兩題學習初始化方式就好vector<int> dp(N1); 509斐波那契數 簡單。 class Solution {public: int fib(int N) { if (N < 1) return N; int dp[2]; dp[0] 0; dp[…

plt畫圖中文亂碼

1、使用font_manager的FontProperties解決 通過FontProperties來設置字符及大小&#xff0c;來解決中文顯示的問題&#xff0c;代碼如下&#xff1a; import matplotlib import matplotlib.pyplot as pltpath "..\simsun.ttc"#改成你自己的文件路徑 font FontProp…

【物聯網實戰項目】STM32C8T6+esp8266/mqtt+dht11+onenet+uniapp

一、實物圖 前端uniapp效果圖&#xff08;實現與onenet同步更新數據&#xff09; 首先要確定接線圖和接線順序&#xff1a; 1、stm32c8t6開發板連接stlinkv2下載線 ST-LINK V2STM323.3V3.3VSWDIOSWIOSWCLKSWCLKGNDGND 2、ch340串口連接底座&#xff08;注意RXD和TXD的連接方式…

NSS題目練習4

[LitCTF 2023]1zjs 打開后是一個游戲&#xff0c;用dirsearch掃描&#xff0c;什么都沒發現 查看源代碼搜索flag&#xff0c;發現沒有什么用 搜索php&#xff0c;訪問 出現一堆符號&#xff0c;看樣子像是jother編碼 解碼得到flag&#xff0c;要刪掉[] [LitCTF 2023]Http pro …

37、Flink 的窗口函數(Window Functions)詳解

窗口函數&#xff08;Window Functions&#xff09; a&#xff09;概述 定義了 window assigner 之后&#xff0c;需要指定當窗口觸發之后&#xff0c;如何計算每個窗口中的數據&#xff0c; 即 window function。 窗口函數有三種&#xff1a;ReduceFunction、AggregateFunc…

嵌入式學習記錄5.27(c++基礎1)

目錄 一.C和C的區別 二.輸入輸出流類 2.1輸出cout 2.2輸入cin 三.命名空間 2.1使用命名空間中的標識符 2.2命名空間中聲明函數 2.3命名沖突問題 2.4匿名空間 2.5命名空間添加&#xff0c;嵌套&#xff0c;重命名 四.字符串的使用 4.1string類 4.2C風格和C風格字符串…

LeetCode27.移除元素

題目鏈接&#xff1a; 27. 移除元素 - 力扣&#xff08;LeetCode&#xff09; 思路分析&#xff1a;同樣屬于經典的雙指針移動問題&#xff0c;要掌握固定的思路即可。 算法分析&#xff1a;這個題目可以這樣處理&#xff0c;我們把所有非val 的元素都向前移動&#xff0c;把…

Java面試八股之線程池是怎么實現的

線程池是怎么實現的 線程池是一種基于池化技術的線程管理方式&#xff0c;通過預先創建一定數量的線程并保持在池中待命&#xff0c;從而在有任務來臨時能夠快速分配線程處理任務&#xff0c;而無需頻繁創建和銷毀線程&#xff0c;以此達到提升系統性能、減少資源消耗的目的。…