第 26 章 CSS3 動畫效果

来源:http://www.cnblogs.com/zfc2201/archive/2016/05/01/5450253.html
-Advertisement-
Play Games

學習要點: 1.動畫簡介 2.屬性詳解 3.簡寫和版本 主講教師:李炎恢 本章主要探討 HTML5 中 CSS3 的動畫效果,可以通過類似 Flash 那樣的關鍵幀模式控制運行。 一.動畫簡介 CSS3 提供了類似 Flash 關鍵幀控制的動畫效果,通過 animation 屬性實現。那麼之前的 t ...


學習要點:

1.動畫簡介

2.屬性詳解

3.簡寫和版本

 

主講教師:李炎恢

 

本章主要探討 HTML5 中 CSS3 的動畫效果,可以通過類似 Flash 那樣的關鍵幀模式控制運行。

 

一.動畫簡介

CSS3 提供了類似 Flash 關鍵幀控制的動畫效果,通過 animation 屬性實現。那麼之前的 transition 屬性只能通過指定屬性的初始狀態和結束狀態來實現動畫效果,有一定的局限性。

animation 實現動畫效果主要由兩個部分組成:1.通過類似 Flash 動畫中的關鍵幀聲明一個動畫;2.在 animation 屬性中調用關鍵幀聲明的動畫。

CSS3 提供的 animation 是一個複合屬性,它包含了很多子屬性。如下表所示:

屬性

說明

 animation-name

用來指定一個關鍵幀動畫的名稱,這個動畫名必須對應一個@keyframes 規則。CSS 載入時會應用 animation-name 指定的動畫,從而執行動畫。

animation-duration

用來設置動畫播放所需的時間

animation-timing-function

用來設置動畫的播放方式

animation-delay

用來指定動畫的延遲時間

animation-iteration-count

用來指定動畫播放的迴圈次數

animation-direction

用來指定動畫的播放方向

animation-play-state

用來控制動畫的播放狀態

animation-fill-mode

用來設置動畫的時間外屬性

animation

以上的簡寫形式

除了這 9 個屬性之外,動畫效果還有一個重要的屬性,就是關鍵幀屬性:@keyframes。它的作用是聲明一個動畫,然後在 animation 調用關鍵幀聲明的動畫。

//基本格式,“name”可自定義

@keyframes name {
/*...*/
}

 

二.屬性詳解

在講解動畫屬性之前,先創建一個基本的樣式。

//一個 div 元素

<div>我是 HTML5</div>

//設置 CSS

div {
    width: 200px;
    height: 200px;
    border: 1px solid green;
}

1.@keyframes

//創建動畫的第一步,先聲明一個動畫關鍵幀。

@keyframes myani { 
    0% {
        margin-left:0px;
    }
    50% {
        margin-left:100px;
    }
    100% {
        margin-left:0px;
    }
}

//或者重覆的,可以併列寫在一起

@keyframes myani { 
    0%, 100% {
        margin-left:0px;
    }
    50% {
        background-color: black; margin-left:100px;
    }
}

2.animation-name

//調用@keyframes 動畫 

animation-name: myani;

屬性值

說明

none

預設值,沒有指定任何動畫

INDEX

是由@keyframes 指定創建的動畫名稱

3.animation-duration

//設置動畫播放的時間

animation-duration: 1s;

當然,以上通過關鍵幀的方式,這裡插入了三個關鍵幀。0%設置了白色和左偏移為 0,和初始狀態一致,表明從這個地方開始動畫。50%設置了黑色,左偏移 100px。而 100%則是最後一個設置,又回到了白色和左偏移為 0。整個動畫就一目瞭然了。

而對於關鍵幀的用法,大部分用百分比比較容易控制,當然,還有其他一些控制方法。

//從什麼狀態過渡到什麼狀態

@keyframes myani {
    from {
        margin-left:0px;
    }
    to {
        margin-left:100px;
    }
}

4.animation-timing-function

//設置緩動

animation-timing-function: ease-in;

5.animation-delay

//設置延遲時間

animation-delay: 1s; 

6.animation-iteration-count

//設置迴圈次數

animation-iteration-count: infinite; 

屬性值

說明

次數

預設值為 1

infinite

表示無限次迴圈

7.animation-direction

//設置緩動方向交替

animation-direction: alternate;

屬性值

說明

normal 

預設值,每次播放向前

alternate

 一次向前,一次向後,一次向前,一次向後這樣交替

8.animation-play-state

//設置停止播放動畫 

animation-play-state: paused;

9.animation-fill-mode

//設置結束後不在返回 

animation-fill-mode: forwards;

屬性值

說明

none

預設值,表示按預期進行和結束

forwards

動畫結束後繼續應用最後關鍵幀位置,即不返回

backforwards

動畫結束後迅速應用起始關鍵幀位置,即返回

both

根據情況產生 forwards 或 backforwards 的效果

//both 需要結合,次數和播放方向 animation-iteration-count: 4; animation-direction: alternate;

 

六.簡寫和版本

//簡寫形式完整版

animation: myani 1s ease 2 alternate 0s both;

為了相容舊版本,需要加上相應的瀏覽器首碼,版本信息如下表:

 

Opera

Firefox

Chrome

Safari

IE

支持需帶首碼

15 ~ 29

5 ~ 15

4 ~ 42

4 ~ 8

支持不帶首碼

16+

43+

10.0+

 //相容完整版,Opera 在這個屬性上加入 webkit,所以沒有

-o--webkit-animation: myani 1s ease 2 alternate 0s both;
-moz-animation: myani 1s ease 2 alternate 0s both;
-ms-animation: myani 1s ease 2 alternate 0s both;
transition: all 1s ease 0s;

//@keyframes 也需要加上首碼 

@-webkit-keyframes myani {...} 
@-moz-keyframes myani {...} 
@-o-keyframes myani {...} 
@-ms-keyframes myani {...} 
keyframes myani {...}

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 學習要點: 1.新版本 主講教師:李炎恢 本章主要探討 HTML5 中 CSS3 提供的用來實現未來響應式彈性伸縮佈局方案,這裡做一個初步的瞭解。 一.新版本 新版本的 Flexbox 模型是 2012 年 9 月提出的工作草案,這個草案是由 W3C 推出的最新語法。這個版本立志於指定標準,讓新式的 ...
  • 學習要點: 1.混合過度版 主講教師:李炎恢 本章主要探討 HTML5 中 CSS3 提供的用來實現未來響應式彈性伸縮佈局方案,這裡做一個初步的瞭解。 一.混合過渡版 混合版本的 Flexbox 模型是 2011 年提出的工作草案,主要是針對 IE10 瀏覽器實現的伸縮佈局效果,其功能和舊版本的屬性 ...
  • 學習要點: 1.佈局簡介 2.舊版本 主講教師:李炎恢 本章主要探討 HTML5 中 CSS3 提供的用來實現未來響應式彈性伸縮佈局方案,這裡做一個初步的瞭解。 一.佈局簡介 CSS3 提供一種嶄新的佈局方式:Flexbox 佈局,即彈性伸縮佈局模型(Flexible Box)。用來提供一個更加有效 ...
  • Transform-變形 CSS3 2D Transform translate() 移動:將HTML元素在x-y軸平面上做位移,且不會影響到其他元素 translate(x,y)水平方向和垂直方向同時移動(也就是X軸和Y軸同時移動) translateX(x)僅水平方向移動(X軸移動) trans ...
  • 學習要點: 1.早期多列問題 2.屬性及版本 3.屬性解釋 主講教師:李炎恢 本章主要探討 HTML5 中 CSS3 提供的多列佈局,通過多列佈局我們方便的創建流體的多列佈局。 一.早期多列問題 我們有時想佈局成報紙、雜誌那樣的多列方式(至少兩列,一般三列以上),但早期 CSS 提供的佈局方式都有著 ...
  • 學習要點: 1.定位佈局 2.box-sizing 3.resize 主講教師:李炎恢 本章主要探討 HTML5 中 CSS 早期所使用的傳統佈局,很多情況下,這些佈局方式還是非常有用的。 一.定位佈局 在使用定位佈局前,我們先瞭解一下定位屬性的用法。CSS2 提供了 position 屬性來實現元 ...
  • 列表組可以用來製作列表清單、垂直導航等效果,也可以配合其他的組件製作出更漂亮的組件,列表組在bootstrap框架中也是一個獨立的組件,所以也對應有自己獨立源碼: LESS:list-group.less SASS:_list-group.scss 列表組看上去就是去掉了列表符號的列表項,並且配上一... ...
  • 學習要點: 1.佈局模型 2.表格佈局 3.浮動佈局 主講教師:李炎恢 本章主要探討 HTML5 中 CSS 早期所使用的傳統佈局,很多情況下,這些佈局方式還是非常有用的。 一.佈局模型 在早期沒有平板和智能手機等移動設備大行其道的時期,Web 頁面的設計主要是面向 PC 端電腦解析度展開的。這種分 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...