1. 程式人生 > >CSS3 自定義動畫(animation)

CSS3 自定義動畫(animation)

除了在之前的文章中介紹過的 CSS3 的變形 (transformation) 和轉換 (transition) 外,CSS3 還有一種自由度更大的自定義動畫,開發者甚至可以使用變形(transformation)和轉換(transition)製作自定義動畫,利用純 CSS 製作出像 Flash 一樣的效果。在實際使用中不難發現,變形和轉換更適合做元素的互動,而自定義動畫除了做互動外還能使到網頁具有活力,有了自定義動畫,利用 CSS 代替 Flash 才會更加現實。

首先看看 animation 的效果 —— Demo 。

一. animation 基礎

animation 的引數與 transition 比較相似,如果之前瞭解過 transition 的童鞋應該會對 animation 的引數感覺很熟悉。具體的引數如下:

animation-name

動畫名稱,預設為 none

animation-duration

動畫的持續時間,預設為 0

animation-timing-function

動畫的過渡型別,引數可選值類似於 transition-timing-function ,預設為 ease ,具體如下:

  • linear:線性過渡。相當於貝塞爾曲線(0.0, 0.0, 1.0, 1.0)
  • ease:平滑過渡。相當於貝塞爾曲線(0.25, 0.1, 0.25, 1.0)
  • ease-in:由慢到快。相當於貝塞爾曲線(0.42, 0, 1.0, 1.0)
  • ease-out:由快到慢。相當於貝塞爾曲線(0, 0, 0.58, 1.0)
  • ease-in-out:由慢到快再到慢。相當於貝塞爾曲線(0.42, 0, 0.58, 1.0)
  • cubic-bezier(number, number, number, number):特定的貝塞爾曲線型別,number 在 [0, 1] 區間內取值

animation-delay

動畫延遲的時間

animation-iteration-count

動畫的迴圈次數,其值可以是一個正整數,表示迴圈次數,也可以設定為 infinite ,即無限迴圈,預設為 1

animation-direction

動畫在迴圈中是否反向運動,normal 為正向方向,alternate 為向常與反向交替運動,具體為第偶數次正向運動,第奇數次向反方向運動,預設為 normal

animation-play-state

表示動畫的狀態,預設值為 running ,表示正在運動,paused 為暫停。但 w3c 正在考慮是否將該屬性移除,並通過重設樣式或其他方式表示動畫的狀態,因此不建議使用該屬性。

以上這些引數都可以同時賦予多個值,只要注意各引數順序對應即可,例如要為 #demo 指定兩個動畫,可以這樣編寫(大多數瀏覽器仍需通過私有屬性才能支援 animation ,為了方便閱讀,這裡省略瀏覽器私有屬性,按 W3C 標準寫法編寫。)

123456#demo {/* 指定動畫名稱 */animation-name: animation1, animation2;/* 指定動畫時長 */animation-duration: 2s 1s;}

這樣 #demo 就會同時獲得兩個動畫,但是,動畫的具體過程還沒有指定,實際上動畫的具體內容並不在 animation 內指定,而是利用另一個屬性 @keyframes 指定,@keyframes 指定了一個動畫的名稱和實際內容,而 animation 則負責為元素指定引用的動畫,並對動畫的時間、過渡型別等作出設定。這樣把動畫的引用和動畫的實際內容分開設定,可以提高動畫的獨立性和利用率。

@keyframes 支援兩種設定方式,分別用於簡單動畫和複雜的動畫

例如,為 #demo 設定一個簡單的線性動畫,使到其 opacity 值由 0 線性過渡到 1,可以直接使用 from 和 to 指定初始和結束狀態,

12345678910#demo {animation-name: animation1;animation-duration: 2s;animation-timing-function: linear; }@keyframes animation1{from{opacity: 0; }to{opacity: 1; }}

若對於複雜的動畫,則需要使用 percentage ,percentage 即百分比,animation 支援使用“%”指定到某一個百分比時動畫所執行到的效果,例如指定元素向右平移再向下平移,可以這樣編寫:

1234567891011121314#demo {animation-name: animation1;animation-duration: 2s;animation-timing-function: linear; }@keyframes animation1{0% {transform: translate(0); }20% {transform: translate(120px); }40% {transform: translate(240px); }60% {transform: translate(240px, 40px); }80% {transform: translate(240px, 80px); }100% {transform: translate(240px, 120px); }}

也可以配合 from 和 to 使用:

1234567891011121314#demo {animation-name: animation1;animation-duration: 2s;animation-timing-function: linear; }@keyframes animation1{from {transform: translate(0); }20% {transform: translate(120px); }

相關推薦

CSS3 定義動畫animation

除了在之前的文章中介紹過的 CSS3 的變形 (transformation) 和轉換 (transition) 外,CSS3 還有一種自由度更大的自定義動畫,開發者甚至可以使用變形(transformation)和轉換(transition)製作自定義動畫,利用純 CSS

Ultra-Pull-To-Refresh超簡單實現定義動畫

前言 接上一篇部落格,Ultra-Pull-To-Refresh超簡單終極實現下拉重新整理、上拉載入 入門實現(一) 上一篇是實現了簡單的自帶的重新整理和載入功能。但是這樣簡單的動畫往往不能滿足我們的需求,所以這一片用一個京東重新整理的例子來實現自定義,就

css3動畫animation效果3-正方體合成

per rip relative java tom gpo 介紹 ack rotate <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">

css3動畫animation效果1-漂浮的白雲

body ini abs mage and run ram info alternate <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">

定義屬性2

aps 按鈕 charset script 定義 type i++ element color 定義三個按鈕 點擊按鈕,出現A、B、C、D字母,點擊一下,出現一個 當按鈕字母為 D 的時候,繼續點擊又會重新回到 A 1 <!DOCTYPE HTML>

定義廣播BroadcastReceiver事件 --Android開發

ppc andro xtend 類型 class get receive cli time 本例演示自定義廣播事件。我們需要做的是,在主活動中寫發送廣播的代碼,然後在接收廣播的類中寫接收廣播的代碼。 1、主活動中點擊按鈕後發送廣播 MainActivity.java

微信小程序:動畫Animation

完成 ack http idt 作用 gin this 變慢 .html 簡單總結一下微信動畫的實現及執行步驟。 一、實現方式 官方文檔是這樣說的:①創建一個動畫實例 animation。②調用實例的方法來描述動畫。③最後

Django定義urlpath轉換器

需求1: 實現一個獲取電影列表的demo,使用者可以根據/movie/電影分類/的方式來獲取電影。其中電影分類採用的是分類1+分類2+分類3...的方式拼接的,並且如果只有一個分類,那就不需要加號。示例如下: # 1. 第一種:獲取action分類下的電影 /movie/action

定義 Laravel monolog日誌位置,並增加請求ID

修改 bootstrap/app.php 檔案 $app->configureMonologUsing(function($monolog) use ($app) { $monolog->pushHandler( (new Monolog\Hand

Spring定義Listener監聽器的使用

文章轉自:https://blog.csdn.net/L253272670/article/details/77715899          在java web專案中我們通常會有這樣的需求:當專案啟動時執行一些初始化操作,例如從資料庫載入全域性

CSS3載入等待動畫loading

效果: CSS樣式表程式碼: #errmsg { color: #ff0000; text-align: center; margin: 0px auto; line-height: 30px; } #colorfulPulse { width

左滑刪除 --- 定義元件優化

想來想去  還是先引入元件吧 http://bmob-cdn-20610.b0.upaiyun.com/2018/11/20/736355a740c835f9806ee0d021ff6696.rar 複製以上鍊接   直接下載  之後壓縮  放進你的專案

解析網頁定義字型

解析網頁自定義字型(二) 介紹 背景知識 TrueType字型 fontTools 字型檔案解析庫 xml.dom.minidom xml程式碼解析庫 matplotlib 繪圖工具包 pytesseract oc

定義View1

點操作:moveTo和lineTo和rLinneTo的理解 1、lineTo 用於進行直線繪製。起點預設為座標原點(左上),如果有path的存在,則是繪製的最後點為基準,座標點對應的(0,0)到lineTo(x,y)的偏移量 比如 /** * 線操作 * lineTo的偏移量相對於原

微信開發學習總結——定義選單5——個性化選單介面

一、個性化選單介面說明 為了幫助公眾號實現靈活的業務運營,微信公眾平臺新增了個性化選單介面,開發者可以通過該介面,讓公眾號的不同使用者群體看到不一樣的自定義選單。該介面開放給已認證訂閱號和已認證服務號。 開發者可以通過以下條件來設定使用者看到的選單: 1、使用者標籤(開發者的

微信開發學習總結——定義選單4——定義選單事件推送

一、自定義選單事件推送介面說明 使用者點選自定義選單後,微信會把點選事件推送給開發者,請注意,點選選單彈出子選單,不會產生上報。請注意,第3個到第8個的所有事件,僅支援微信iPhone5.4.1以上版本,和Android5.4以上版本的微信使用者,舊版本微信使用者點選後將沒有迴應,開

微信開發學習總結——定義選單3——定義選單刪除介面

自定義選單刪除介面 使用介面建立自定義選單後,開發者還可使用介面刪除當前使用的自定義選單。另請注意,在個性化選單時,呼叫此介面會刪除預設選單及全部個性化選單。 請求說明 http請求方式:GET https://api.weixin.qq.com/cgi-bin/menu/d

微信開發學習總結——定義選單2——定義選單查詢介面

自定義選單查詢介面 使用介面建立自定義選單後,開發者還可使用介面查詢自定義選單的結構。另外請注意,在設定了個性化選單後,使用本自定義選單查詢介面可以獲取預設選單和全部個性化選單資訊。 請求說明 http請求方式:GET https://api.weixin.qq.com/cg

微信開發學習總結——定義選單1——定義選單建立介面

一、自定義選單建立介面說明 自定義選單能夠幫助公眾號豐富介面,讓使用者更好更快地理解公眾號的功能。開啟自定義選單後,公眾號介面如圖所示: 請注意: ①自定義選單最多包括3個一級選單,每個一級選單最多包含5個二級選單。 ②一級選單最多4個漢字,二級選單最多7個漢字,多出來的部分將

Android定義View-Draw原理篇

Android自定義View通常需要經過measure、layout和draw過程。 如果你沒有了解過measure過程,可以先看看這篇文章。 如果你沒有了解過layout過程,可以先看看這篇文章。 一、draw的作用:繪製View檢視 二、draw過程:類似meas