前端學習7:CSS過渡與動畫--補間動畫 (Transition) vs 關鍵幀動畫 (Animation)

一、補間動畫(Tween Animation)vs 關鍵幀動畫(Keyframe Animation)

概念對比表:

補間動畫 (Transition)關鍵幀動畫 (Animation)
定義元素從初始狀態結束狀態的過渡效果通過定義多個關鍵幀控制動畫的中間狀態
觸發方式需要狀態變化(如:hover)自動執行或手動觸發
控制粒度只能定義首尾狀態可精確控制每個時間點的狀態
循環能力不能自動循環可無限循環或指定次數
適用場景簡單交互效果(按鈕懸停、菜單展開)復雜動畫(加載動畫、卡通動畫)

二、補間動畫(Transition)

過渡 是元素從一種樣式逐漸改變為另一種的效果。

1、基礎知識:

.element {
transition: [屬性名]? ? [持續時間]? ? [緩動函數]? ? [延遲時間];

/* 示例: */
transition: all 0.3s ease-in-out 0.1s;
}

2、案例實操:按鈕懸停特效

<!DOCTYPE html>
<html>
<head><title><!DOCTYPE html>
<html>
<head><title>補間動畫學習</title><style>.btn {padding: 10px 20px;margin: 50px;background: #3498db;color: white;border: none;transition: all 0.5s cubic-bezier(0.68, -0.55, 0.27, 1.55) 0.1s;  /* 彈性效果 */}.btn:hover {background: #e74c3c;transform: scale(1.2) rotate(5deg);  /* 放大和旋轉 */box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);  /* 添加陰影 */}</style>
</head><body><button class="btn">懸停看我變身</button>
</body>
</html>

?效果圖(觀察鼠標移入/移出時動畫速度不同(緩動函數的作用)):

鼠標懸停后顯示:?

代碼解析:

1、transform: scale(1.2) rotate(5deg);

  • scale(1.2):能讓元素在水平和垂直方向上都放大為原來的 1.2 倍。
  • rotate(5deg):會使元素按順時針方向旋轉 5 度。

2、transition: all 0.5s cubic-bezier(0.68, -0.55, 0.27, 1.55) 0.1s;

  • all:表明所有可過渡的屬性發生變化時,都會應用這個過渡效果。
  • 0.5s:代表過渡動畫從開始到結束所持續的時間為 0.5 秒。
  • cubic-bezier(0.68, -0.55, 0.27, 1.55):這是自定義的貝塞爾曲線,用于控制動畫的速度變化。其特點是動畫開始時會有一個反向的運動,結束前又會有一個向前的沖刺。
    • 貝塞爾曲線的四個參數分別是?(x1, y1, x2, y2),在這個例子中:
      • (0.68, -0.55)?是第一個控制點的坐標。
      • (0.27, 1.55)?是第二個控制點的坐標。
  • 0.1s:意味著動畫會延遲 0.1 秒后才開始執行。

3、box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);

  • 0
    • 這是水平偏移量,它控制著陰影在水平方向上相對于元素的位置。當值為正數時,陰影會出現在元素的右側;值為負數時,陰影則會出現在元素的左側;這里值為 0,表示陰影在水平方向上與元素對齊,不會產生偏移。
  • 5px
    • 此為垂直偏移量,用于控制陰影在垂直方向上相對于元素的位置。正值會使陰影出現在元素的下方,負值會使陰影出現在元素的上方;這里的?5px?表示陰影在元素下方垂直偏移 5 像素的位置。
  • 15px
    • 這是模糊半徑,它決定了陰影邊緣的模糊程度。數值越大,陰影的邊緣就越模糊、越擴散;15px?會使陰影邊緣呈現出比較柔和的效果。
  • rgba(0, 0, 0, 0.3)
    • 這是陰影的顏色,采用的是 RGBA 顏色模式:
      • (0, 0, 0)?代表黑色。
      • 0.3?是透明度(alpha 值),范圍在?0.0(完全透明)到?1.0(完全不透明)之間;這里的?0.3?表示陰影是半透明的。

三、關鍵幀動畫實戰(Animation)

1、基礎知識:

????????@keyframes 規則是創建動畫。

????????@keyframes 規則內指定一個 CSS 樣式和動畫將逐步從目前的樣式更改為新的樣式。

@keyframes 動畫名稱 {
0% { /* 初始狀態 */ }
50% { /* 中間狀態 */ }
100% { /* 結束狀態 */ }
}

.element {
animation: 動畫名稱 持續時間 時間函數 延遲 循環次數 方向 填充模式 播放狀態;
}

?2、案例實操:加載旋轉動畫

<!DOCTYPE html>
<html>
<head><title>關鍵幀動畫學習</title><style>@keyframes spin {0% { transform: rotate(0deg); opacity: 0.5;}100% { transform: rotate(360deg); opacity: 1;}}.loader {width: 40px;          /* 寬度 */height: 40px;         /* 高度(與寬度相同形成正圓) */border: 4px solid #f3f3f3; /* 灰色邊框作為背景 */border-top: 4px solid #3498db; /* 頂部藍色邊框作為進度指示 */border-radius: 50%;   /* 圓角50%形成圓形 */animation: spin 1.5s linear infinite;}</style>
</head><body><div class="loader"></div>
</body>
</html>

代碼解析:

1、.loader

  • width: 40px;? ?height: 40px;? ??border-radius: 50%;? ? ? ?這三個就是直接做了一個正圓
  • border-top: 4px solid #3498db;? ? ? ?通過只給border-top設置不同顏色,其他邊透明/同色,寬度也設置了4px,創造出"進度條"效果。

2、@keyframes

@keyframes spin { /* 定義名為spin的動畫序列 */0% { /* 起始幀(動畫開始時的狀態) */transform: rotate(0deg);  /* 初始旋轉角度0度 */opacity: 0.5;            /* 初始半透明 */}100% { /* 結束幀(動畫結束時的狀態) */transform: rotate(360deg); /* 旋轉一圈(360度) */opacity: 1;              /* 完全不透明 */}
}
  • 可以插入更多中間幀(如30%60%)實現復雜動畫

  • 所有變化的屬性必須具有相同的插值邏輯(如rotate從0到360是線性變化)

?3、animation: spin 1.5s linear infinite;

參數作用
動畫名稱spin綁定前面定義的@keyframes動畫
持續時間1.5s完成一次動畫所需時間
緩動函數linear勻速運動(對比:ease-in先慢后快)
循環次數infinite無限循環(也可設具體數字如2

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

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

相關文章

PyTorch 損失函數詳解:從理論到實踐

目錄 一、損失函數的基本概念 二、常用損失函數及實現 1. 均方誤差損失&#xff08;MSELoss&#xff09; 2. 平均絕對誤差損失&#xff08;L1Loss/MAELoss&#xff09; 3. 交叉熵損失&#xff08;CrossEntropyLoss&#xff09; 4. 二元交叉熵損失&#xff08;BCELoss&…

MinIO深度解析:從核心特性到Spring Boot實戰集成

在當今數據爆炸的時代&#xff0c;海量非結構化數據的存儲與管理成為企業級應用的關鍵挑戰。傳統文件系統在TB級數據面前捉襟見肘&#xff0c;而昂貴的云存儲服務又讓中小企業望而卻步。MinIO作為一款開源高性能對象存儲解決方案&#xff0c;正以其獨特的技術優勢成為開發者的首…

騰訊云服務上下載docker以及使用Rabbitmq的流程

執行以下命令&#xff0c;添加 Docker 軟件源并配置為騰訊云源。sudo yum-config-manager --add-repohttps://mirrors.cloud.tencent.com/docker-ce/linux/centos/docker-ce.repo sudo sed -i "s/download.docker.com/mirrors.tencentyun.com\/docker-ce/g" /etc/yu…

UE5 一些關于過場動畫sequencer,軌道track的一些Python操作

刪除多余的軌道 import unreal def execute():movie_scene_actors []sequence_assets []data 0.0# 獲取編輯器實用工具庫lib unreal.EditorUtilityLibrary()selected_assets lib.get_selected_assets()for asset in selected_assets:if asset.get_class() unreal.LevelS…

前端性能優化“核武器”:新一代圖片格式(AVIF/WebP)與自動化優化流程實戰

前端性能優化“核武器”&#xff1a;新一代圖片格式(AVIF/WebP)與自動化優化流程實戰 當你的頁面加載時間超過3秒時&#xff0c;用戶的跳出率會飆升到40%以上。而在所有的前端性能優化手段中&#xff0c;圖片優化無疑是投入產出比最高的一環。一張未經優化的巨大圖片&#xff0…

單元測試學習+AI輔助單測

標題單元測試衡量指標具體測試1、Resource2、MockBean3、Test4、Test模板5、單測示例H2數據庫JSON1、使用方式AI輔助單測使用方法單元測試 單元測試一般指程序員在寫好代碼后&#xff0c;提交測試前&#xff0c;需要驗證自己的代碼是否可以正常工作&#xff0c;同時將自己的代…

Spring Cloud Gateway與Envoy Sidecar在微服務請求路由中的架構設計分享

Spring Cloud Gateway與Envoy Sidecar在微服務請求路由中的架構設計分享 在現代微服務架構中&#xff0c;請求路由層承擔著流量分發、安全鑒權、流量控制等多重職責。傳統的單一網關方案往往面臨可擴展性和可維護性挑戰。本文將從真實生產環境出發&#xff0c;分享如何結合Spri…

GitHub Pages+Jekyll 靜態網站搭建(二)

GitHub PagesJekyll 靜態網站搭建&#xff08;二&#xff09;GitHub PagesJekyll 靜態網站搭建&#xff08;二內容簡介搭建模板網站部署工作流程GitHub PagesJekyll 靜態網站搭建&#xff08;二 內容簡介 &#x1f6a9; Tech Contents 該文主要涉及Jekyll主題的下載與使用。Gi…

Django 實戰:I18N 國際化與本地化配置、翻譯與切換一步到位

文章目錄一、國際化與本地化介紹定義相關概念二、安裝配置安裝 gettext配置 settings.py三、使用國際化視圖中使用序列化器和模型中使用四、本地化操作創建或更新消息文件消息文件說明編譯消息文件五、項目實戰一、國際化與本地化介紹 定義 國際化和本地化的目標&#xff0c;…

通過國內扣子(Coze)搭建智能體并接入discord機器人

國內的扣子是無法直接授權給discord的&#xff0c;但是用國外的coze的話&#xff0c;大模型調用太貴&#xff0c;如果想要接入國外的平臺&#xff0c;那就需要通過調用API來實現。 1.搭建智能體&#xff08;以工作流模式為例&#xff09; 首先&#xff0c;我們需要在扣子平臺…

【辦公類-107-02】20250719視頻MP4轉gif(削減MB)

背景需求 最近在寫第五屆智慧項目結題(一共3篇)寫的昏天黑地,日以繼夜。 我自己《基于“AI技術”的幼兒園教學資源開發和運用》提到了AI繪畫、AI視頻和AI編程。 為了更好的展示AI編程的狀態,我在WORD里面插入了MP4轉gif的動圖。 【教學類-75-04】20241023世界名畫-《蒙…

一文講清楚React的render優化,包括shouldComponentUpdate、PureComponent和memo

文章目錄一文講清楚React的render優化&#xff0c;包括shouldComponentUpdate、PureComponent和memo1. React的渲染render機制2. shouldComponentUpdate2.1 先上單組件渲染&#xff0c;驗證state變化2.2 上父子組件&#xff0c;驗證props2. PureComponent2.1 單組件驗證state2.…

物聯網iot、mqtt協議與華為云平臺的綜合實踐(萬字0基礎保姆級教程)

本學期的物聯網技術與應用課程&#xff0c;其結課設計內容包含&#xff1a;mqtt、華為云、PyQT5和MySQL等結合使用&#xff0c;完成了從華為云配置產品信息以及轉發規則&#xff0c;到mqtt命令轉發&#xff0c;再到python編寫邏輯代碼實現相關功能&#xff0c;最后用PyQT5實現面…

使用IntelliJ IDEA和Maven搭建SpringBoot集成Fastjson項目

使用IntelliJ IDEA和Maven搭建SpringBoot集成Fastjson項目 下面我將詳細介紹如何在IntelliJ IDEA中使用Maven搭建一個集成Fastjson的SpringBoot項目&#xff0c;包含完整的環境配置和代碼實現。 一、環境準備 軟件要求 IntelliJ IDEA 2021.x或更高版本JDK 1.8或更高版本&#x…

Java從入門到精通!第九天, 重點!(集合(一))

十一、集合1. 為什么要使用集合(1) 數組存在的弊端1) 數組在初始化之后&#xff0c;長度就不能改變&#xff0c;不方便擴展。2) 數組中提供的屬性和方法比較少&#xff0c;不便于進行添加、刪除、修改等操作&#xff0c;并且效率不高&#xff0c;同時無法直接存儲元素的個數。3…

為什么使用時序數據庫

為什么使用時序數據庫&#xff1f; 時序數據庫&#xff08;Time-Series Database, TSDB&#xff09;是專為時間序列數據優化的數據庫&#xff0c;相比傳統關系型數據庫&#xff08;如MySQL&#xff09;或NoSQL數據庫&#xff08;如MongoDB&#xff09;&#xff0c;它在以下方面…

計算機網絡:(十一)多協議標記交換 MPLS

計算機網絡&#xff1a;&#xff08;十一&#xff09;多協議標記交換 MPLS前言一、傳統網絡的問題二、MPLS&#xff1a;給數據包貼個“標簽”三、MPLS的工作流程1. 入站2. 中間3. 出站四、MPLS的能力前言 前面我們講解了計算機網絡中網絡層的相關知識&#xff0c;包括網絡層轉發…

docker run elasticsearch 報錯

谷粒商城 p103 前提條件&#xff1a; 下載鏡像文件 #存儲和檢索數據 docker pull elasticsearch:7.4.2 #可視化檢索數據 docker pull kibana:7.4.2 創建掛載的文件和配置 mkdir -p /mydata/elasticsearch/config mkdir -p /mydata/elasticsearch/data echo "http.h…

巧用Callbre RVE生成DRC HTML report及CTO的使用方法

對于后端版圖人員&#xff0c;在芯片TO前的LV signoff階段&#xff0c;猶如一段漫長而有期待的朝圣之旅&#xff0c;需要耐心&#xff0c;毅力和信心&#xff0c;在龐雜的DRC中找到一條收斂之路。為了讓此路更為清晰收斂&#xff0c;Calibre提供了一套可追溯對比的富文本方式-H…

產品需求文檔(PRD)格式全解析:從 RP 到 Word 的選擇與實踐

產品需求文檔&#xff08;PRD&#xff09;的形式多種多樣&#xff0c;但核心目標始終一致&#xff1a;清晰傳遞產品需求&#xff0c;讓團隊高效協作。不同公司對 PRD 的格式要求可能不同&#xff0c;有的偏愛直接在原型工具中撰寫&#xff0c;有的則習慣用 Word 整理歸檔。本文…