css動畫定義,CSS3中Animation動畫的定義和調用

現在經常會看到一些門戶網站的專題使用到CSS3的動畫,咋也不能落伍,在此這梳理下動畫知識吧,便于后面用到。接下來介紹下Animation動畫的定義和調用,在介紹Animation之前需要了解下Keyframes,英文意思就是關鍵幀,它相當于我們flash里面的幀。

Keyframes具有其自己的語法規則,他的命名是由"@keyframes"開頭,后面緊接著是這個“動畫的名稱”加上一對花括號“{}”,括號中就是一些不同時間段樣式

規則,有點像我們css的樣式寫法一樣。對于一個"@keyframes"中的樣式規則是由多個百分比構成的,如“0%”到"100%"之間,我們可以在

這個規則中創建多個百分比,我們分別給每一個百分比中給需要有動畫效果的元素加上不同的屬性,從而讓元素達到一種在不斷變化的效果,比如說移動,改變元素

顏色,位置,大小,形狀等,不過有一點需要注意的是,我們可以使用“fromt”“to”來代表一個動畫是從哪開始,到哪結束,也就是說這個

"from"就相當于"0%"而"to"相當于"100%",值得一說的是,其中"0%"不能像別的屬性取值一樣把百分比符號省略,我們在這里必須加上百

分符號(“%”)如果沒有加上的話,我們這個keyframes是無效的,不起任何作用。因為keyframes的單位只接受百分比值。

Keyframes可以指定任何順序排列來決定Animation動畫變化的關鍵位置。其具體語法規則如下:keyframes-rule:?'@keyframes'?IDENT?'{'?keyframes-blocks?'}';

keyframes-blocks:?[?keyframe-selectors?block?]*?;

keyframe-selectors:?[?'from'?|?'to'?|?PERCENTAGE?]?[?','?[?'from'?|?'to'?|?PERCENTAGE?]?]*;

none:表示不進么變換;表示一個或多個變換函數,以空格分開;換句話說就是我們同時對一

個元素進行transform的多種屬性操作,例如rotate、scale、translate三種,但這里需要提醒大家的,以往我們疊加效果都是用逗

號(“,”)隔開,但transform中使用多個屬性時卻需要有空格隔開。大家記住了是空格隔開。

取值:

transform屬性實現了一些可用SVG實現的同樣的功能。它可用于內聯(inline)元素和塊級(block)元素。它允許我們旋轉、縮放

和移動元素

,他有幾個屬性值參數:rotate;translate;scale;skew;matrix。下面我們分別來介紹這幾個屬性值參數的具體使用方法:

我把上面的語法綜合起來@keyframes?IDENT?{

from?{

Properties:Properties?value;

}

Percentage?{

Properties:Properties?value;

}

to?{

Properties:Properties?value;

}

}

其中IDENT是一個動畫名稱,你可以隨便取,當然語義化一點更好,Percentage是百分比值,我們可以添加許多個這樣的百

分比,Properties為css的屬性名,比如說left,background等,value就是相對應的屬性的屬性值。值得一提的是,我們

from和to

分別對應的是0%和100%。這個我們在前面也提到過了。到目前為止支技animation動畫的只有webkit內核的瀏覽器,所以我需要在上面的基礎

上加上-webkit前綴,據說Firefox5可以支持css3的 animation動畫屬性。

舉個官方實例來,大伙就可以看得很清楚了,如下:@-webkit-keyframes?'wobble'?{

0%?{

margin-left:?100px;

background:?green;

}

40%?{

margin-left:?150px;

background:?orange;

}

60%?{

margin-left:?75px;

background:?blue;

}

100%?{

margin-left:?100px;

background:?red;

}

}

這里我們定義了一個叫“wobble”的動畫,他的動畫是從0%開始到100%時結束,從中還經歷了一個40%和60%兩個過程,上面代碼具體意思

是:wobble動畫在0%時元素定位到left為100px的位置背景色為green,然后40%時元素過渡到left為150px的位置并且背景色為

orange,60%時元素過渡到left為75px的位置,背景色為blue,最后100%結束動畫的位置元素又回到起點left為100px處,背景

色變成red。

定義好動畫,如何調用呢,如下:.box?{

width:?50px;

height:?50px;

margin-left:?100px;

background:?blue;

-webkit-animation-name:'wobble';/*動畫屬性名,也就是我們前面keyframes定義的動畫名*/

-webkit-animation-duration:?10s;/*動畫持續時間*/

-webkit-animation-timing-function:?ease-in-out;?/*動畫頻率,和transition-timing-function是一樣的*/

-webkit-animation-delay:?2s;/*動畫延遲時間*/

-webkit-animation-iteration-count:?10;/*定義循環資料,infinite為無限次*/

-webkit-animation-direction:?alternate;/*定義動畫方式*/

}

可能大伙看到上面不是很了解,我們看下其屬性的語法,再回來看這個例子就很清楚了

一、animation-name:

語法:animation-name:?none?|?IDENT[,none?|?IDENT]*;

取值說明:

animation-name:是用來定義一個動畫的名稱,其主要有

兩個值:IDENT是由Keyframes創建的動畫名,換句話說此處的IDENT要和Keyframes中的IDENT一致,如果不一致,將不能實現任

何動畫效果;none為默認值,當值為none時,將沒有任何動畫效果。另外我們這個屬性跟前面所講的transition一樣,我們可以同時附幾個

animation給一個元素,我們只需要用逗號“,”隔開。

二、animation-duration:

語法:animation-duration:?[,]*

取值說明:

animation-duration是用來指定元素播放動畫所持續的時間長,取值:為數值,單位為s (秒.)其默認值為“0”。這個屬性跟transition中的transition-duration使用方法是一樣的。

三、animation-timing-function:

語法:animation-timing-function:ease?|?linear?|?ease-in?|?ease-out?|?ease-in-out?|?cubic-bezier(,?,?,?)?[,?ease?|?linear?|?ease-in?|?ease-out?|?ease-in-out?|?cubic-bezier(,?,?,?)]*

取值說明:

animation-timing-function:是指元素根據時間的推進來改變屬性值的變換速率,說得簡單點就是動畫的播放方式。他和transition中的transition-timing-function一樣,具有以下六種變換方式:ease;ease-in;ease-in-out;linear;cubic-bezier。具體的使用方法如下:

transition-timing-function的值允許你根據時間的推進去改變屬性值的變換速率,transition-timing-function有6個可能值:

1、ease:(逐漸變慢)默認值,ease函數等同于貝塞爾曲線(0.25, 0.1, 0.25, 1.0).

2、linear:(勻速),linear 函數等同于貝塞爾曲線(0.0, 0.0, 1.0, 1.0).

3、ease-in:(加速),ease-in 函數等同于貝塞爾曲線(0.42, 0, 1.0, 1.0).

4、ease-out:(減速),ease-out 函數等同于貝塞爾曲線(0, 0, 0.58, 1.0).

5、ease-in-out:(加速然后減速),ease-in-out 函數等同于貝塞爾曲線(0.42, 0, 0.58, 1.0)

6、cubic-bezier:(該值允許你去自定義一個時間曲線), 特定的cubic-bezier曲線。 (x1, y1, x2, y2)四個值特定于曲線上點P1和點P2。所有值需在[0, 1]區域內,否則無效。

其是cubic-bezier為通過貝賽爾曲線來計算“轉換”過程中的屬性值,如下曲線所示,通過改變P1(x1, y1)和P2(x2, y2)的坐標可以改變整個過程的Output Percentage。初始默認值為default.

四、animation-delay:

語法:animation-delay:?[,]*

取值說明:

animation-delay:是用來指定元素動畫開始時間。取值為為數值,單位為s(秒),其默認值也是0。這個屬性和transition-delayy使用方法是一樣的。

五、animation-iteration-count

語法:animation-iteration-count:infinite?|??[,?infinite?|?]*

取值說明:

animation-iteration-count是用來指定元素播放動畫的循環次數,其可以取值為數字,其默認值為“1”;infinite為無限次數循環。

六、animation-direction

語法:animation-direction:?normal?|?alternate?[,?normal?|?alternate]*

取值說明:

animation-direction是用來指定元素動畫播放的方向,其只有兩個值,默認值為normal,如果設置為normal時,動畫的每次循環都是向前播放;另一個值是alternate,他的作用是,動畫播放在第偶數次向前播放,第奇數次向反方向播放。

七、animation-play-state

語法:animation-play-state:running?|?paused?[,?running?|?paused]*

取值說明:

animation-play-state主要是用來控制元素動畫的

播放狀態。其主要有兩個值,running和paused其中running為默認值。他們的作用就類似于我們的音樂播放器一樣,可以通過paused將

正在播放的動畫停下了,也可以通過running將暫停的動畫重新播放,我們這里的重新播放不一定是從元素動畫的開始播放,而是從你暫停的那個位置開始播

放。另外如果暫時了動畫的播放,元素的樣式將回到最原始設置狀態。這個屬性目前很少內核支持,所以只是稍微提一下。

上面我們分別介紹了animation中的各個屬性的語法和取值,那么我們綜合上面的內容可以給animation屬性一個速記法:animation:[?||??||??||??||??||?]?[,?[?||??||??||??||??||?]?]*

如下圖所示

c5eab9a9b0f21d89bb60a48734b7b554.png

相信大家看完語法后,應該對于上面的例子很清楚了吧。不過話說回來動畫是可以做了,但兼容它的瀏覽器不多啊,目前只有蘋果,谷歌,火狐支持。

好啦,了解完這些就可以應用到實際應用中了。

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

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

相關文章

mysql5.7+proxy_mysql 5.7+mysql-proxy 0.8.5 讀寫分離

主從環境:mysql操做系統:CentOS6.5_x64linux主服務器Master:192.168.0.103sql從服務器Slave:192.168.0.105后端調度服務器MySQL-Proxy:192.168.0.104服務器1、mysql主從復制tcp2、mysql-proxy實現讀寫分離測試一、安裝…

flask ajax 文件上傳,python flask使用ajax請求上載文件。文件為空

我正在嘗試上傳一個大約1.62MB的圖像到一個用燒瓶寫的終點。request.files對象始終為空。我檢查了以下問題,但沒有成功:這是我的服務器:from flask import Flask, request, jsonify, render_templateimport sysapp Flask(__name__)app.config[UPLOAD_FOLDER] r"C:\Temp&…

mysql 賬戶管理_Mysql賬戶管理原理與實現方法詳解

本文實例講述了Mysql賬戶管理原理與實現方法。分享給大家供大家參考,具體如下:賬戶管理在生產環境下操作數據庫時,絕對不可以使用root賬戶連接,而是創建特定的賬戶,授予這個賬戶特定的操作權限,然后連接進行…

宏脈系統怎么改服務器地址,宏脈系統使用手冊大全.doc

WORD資料下載可編輯專業資料分享目錄TOC \o "1-3" \h \u HYPERLINK \l _Toc16722 第一章 通用功能鍵說明 PAGEREF _Toc16722 4HYPERLINK \l _Toc15100 1.1功能鍵的使用說明 PAGEREF _Toc15100 4HYPERLINK \l _Toc5198 1.2 打印設置 PAGEREF _Toc5198 8HYPERLINK \l _…

navicat for mysql 用戶_Navicat for MySQL 怎么/怎么添加管理用戶?Navicat for MySQL 添加管理用戶教程_37游游網...

【37游游攻略】為了保證數據庫的安全,對操作用戶分級授權是非常有必要的,Navicat for MySQL 給我們提供了一個非常強悍又非常便捷的用戶管理系統。點擊位于連接右側的用戶命令,隨之彈出管理用戶的界面,Navicat for MySQL 系統默認…

ajax實現向上正在加載,向上滾動或者向下滾動分頁異步加載數據(Ajax + lazyload)

/****desc : 分頁異步獲取列表數據,頁面向上滾動時候加載前面頁碼,向下滾動時加載后面頁碼ajaxdata_url ajax異步的URL 如data.phppage_val_name ajax異步的URL中的頁碼參數名 如pagenopage_no 初始加載頁碼,默認1 [如2,則與前面兩參數結合為…

js如何上傳大文件到服務器,js將文件上傳到遠程服務器

js將文件上傳到遠程服務器 內容精選換一換將文件上傳至Windows云服務器一般會采用MSTSC遠程桌面連接的方式。本節為您介紹本地Windows計算機通過遠程桌面連接,上傳文件至Windows云服務器的操作方法。Windows云服務器可以訪問公網。在本地Windows計算機上&#xff0c…

centos odbc mysql_Centos下安裝并配置ODBC連接MySQL 【轉】

找到一篇英文的關于Linux下ODBC的安裝和配置,在此根據自己的需要截取部分記錄一下。安裝并配置ODBCODBC連接器是一個數據庫抽象層,它可以讓Asterisk與廣泛的數據庫進行通信,而無需開發人員為Asterisk需要的每一個數據庫創建一個單獨的數據庫連…

增強服務器安全性能,加強Linux服務器安全的20項建議

很多人都說 Linux 在默認配置下很安全,我在一定程度上同意這個說法(很值得商榷的話題)。不過 Linux 內置的安全模型和工具做得確實很到位,用戶只需進行簡單的調整和自定義就可以加強 Linux 服務器安全。與惡意用戶做斗爭對于所有 Linux 系統管理員來說都…

mysql禁用歷史命令_如何禁止mysql記錄歷史命令

如何禁止mysql記錄歷史命令?在執行 SQL命令時,mysql會將歷史命令記錄到~/.mysql_history文件中,因此我們用上下鍵就可以翻閱歷史命令了。也許某些特殊需要我們可能需要不讓它記錄這些歷史命令,我們可以這樣作:[rootTes…

陰陽師師徒系統不同服務器,陰陽師體服師徒系統未收錄改為隨機SSR

昨天下午,受到很多爭議的體服“師徒系統”更新啦!新版的“師徒系統”修改了徒弟的條件,總的來說能剔除壓級大佬,并且之前獎勵未收錄SSR降低為隨機SSR式神,難怪很多陰陽師都說:“大快人心!”的確…

Mysql union聯合查詢_Mysql聯合查詢union和union all的使用介紹

一、UNION和UNION ALL的作用和語法UNION 用于合并兩個或多個 SELECT 語句的結果集,并消去表中任何重復行。UNION 內部的 SELECT 語句必須擁有相同數量的列,列也必須擁有相似的數據類型。同時,每條 SELECT 語句中的列的順序必須相同.SQL UNION…

ios 查看同文件名_實戰恢復cisco 2950交換機的IOS

本來想用兩臺思科交換機做實驗的,可是通過console口進入其中一臺交換機后卻發現這個臺交換機的IOS文件丟失了。本來正常進入交換機后應該是首先進入到用戶模式的,而且提示符應該是“>”,而現在提示符卻成了“:”,如…

repositoryitemlookupedit根據每行的id綁定數據_一種根據數據庫自增ID生成唯一ID的解決方案...

在我們的開發過程中,經常會遇到ID生成的問題,那么這里就介紹一種解決方案,注意這里只適合混淆ID規則,也就是說生成的ID沒有任何規則,不適用于訂單ID。一般有序自增主鍵的ID,極易被爬蟲抓取數據,…

bootstracp實現樹形列表_Java實現一致性哈希算法,并搭建環境測試其負載均衡特性...

實現負載均衡是后端領域一個重要的話題,一致性哈希算法是實現服務器負載均衡的方法之一,你很可能已在一些遠程服務框架中使用過它。下面我們嘗試一下自己實現一致性哈希算法。一. 簡述一致性哈希算法這里不詳細介紹一致性哈希算法的起源了,網…

c# mysql數據庫查詢語句_C# mysql 查詢

展開全部|mysql> select * from test_book1;-------------------------------------------------|e68a84e8a2ad3231313335323631343130323136353331333335303534 id | name | data |-------------------------------------------------| …

系統分析師和系統架構設計師難度比較_系統架構設計師,馬上開課了!

一年只考一次的系統架構設計師7月7日通關指南開課系統架構設計師考試,是2009年11月計算機資格考試新增專業,這個級別屬于高級資格考試。與該考試同級別的還有系統分析師、信息系統項目管理師、系統規劃與管理師以及網絡規劃設計師。系統架構設計師每年考…

運維人員mysql如何訪問_mysql 運維常見操作

MySQL密碼的恢復方法之一1.首先確認服務器出于安全的狀態,也就是沒有人能夠任意地連接MySQL數據庫。 因為在重新設置MySQL的root密碼的期間,MySQL數據庫完全出于沒有密碼保護的 狀態下,其他的用戶也可以任意地登錄和修改MySQL的信…

mocha 測試 mysql_node項目mocha自動化測試的疑問

測試框架:mocha數據庫:mysql和mongodb疑問1. 如何控制多個測試用例的運行順序?用例寫多了,A用例把數據變成了狀態1,有些后面的用例基于這個狀態1的數據進行查詢判斷,才能使得后面的用例正常運行&#xff0c…

pythonhelloworld實例_Python基于Tkinter的HelloWorld入門實例

本文實例講述了Python基于Tkinter的HelloWorld入門實例。分享給大家供大家參考。具體分析如下:初學Python,打算做幾個Tkinter的應用來提高。剛學的HelloWorld,秀一下。我用Python3.2的,Windows版本的。源代碼如下: #導…