用css3的animatiom完成動畫的小效果

用CSS3的animation實現動畫

用到了animation就先說說這個屬性吧!


一、animation屬性簡介

animation是網頁上的動畫,是通過@keyframe定義一個定義幀動畫!完成網頁的炫酷的小動畫!在CSS3出現之前,網頁上的動畫大多是用flash實現的,flash動畫會產生很大的弊端!操作不便等等

因爲暫時是學習回憶階段,沒有考慮兼容性問題,所以在css裏沒有加上前綴,請見諒!

1. 語法

	animation: name duration timing-function delay iteration-count direction;

2. 定義和用法

animation 屬性是一個簡寫屬性,用於設置六個動畫屬性:
animation-name
--規定需要綁定到選擇器的 keyframe 名稱。。

animation-duration
--規定完成動畫所花費的時間,以秒或毫秒計。

animation-timing-function
--規定動畫的速度曲線。

animation-delay
--規定在動畫開始之前的延遲。

animation-iteration-count
--規定動畫應該播放的次數。

animation-direction
--規定是否應該輪流反向播放動畫。

描述
animation-name 規定需要綁定到選擇器的 keyframe 名稱。。
animation-duration 規定完成動畫所花費的時間,以秒或毫秒計。
animation-timing-function 規定動畫的速度曲線。
animation-delay 規定在動畫開始之前的延遲。
animation-iteration-count 規定動畫應該播放的次數。
animation-direction 規定是否應該輪流反向播放動畫。







1. animation-name

animation-name 屬性爲 @keyframes 動畫規定名稱。
	animation-name: keyframename|none;

描述
keyframename 規定需要綁定到選擇器的 keyframe 的名稱。
none 規定無動畫效果(可用於覆蓋來自級聯的動畫)。




2. animation-duration

animation-duration 屬性定義動畫完成一個週期所需要的時間,以秒或毫秒計。
	animation-duration: time;

描述
time 規定完成動畫所花費的時間。默認值是 0,意味着沒有動畫效果。



3. animation-timing-function

animation-timing-function 規定動畫的速度曲線。
速度曲線定義動畫從一套 CSS 樣式變爲另一套所用的時間。
速度曲線用於使變化更爲平滑。
	animation-timing-function: value;

animation-timing-function 使用名爲三次貝塞爾(Cubic Bezier)函數的數學函數,來生成速度曲線。您能夠在該函數中使用自己的值,也可以預定義的值:
描述
linear 動畫從頭到尾的速度是相同的。(等於 cubic-bezier(0,0,1,1))。
ease 默認。動畫以低速開始,然後加快,在結束前變慢。(cubic-bezier(0.25,0.1,0.25,1))。
ease-in 動畫以低速開始。(等於 cubic-bezier(0.42,0,1,1))。
ease-out 動畫以低速結束。(等於 cubic-bezier(0,0,0.58,1))。
ease-in-out 動畫以低速開始和結束。(等於 cubic-bezier(0.42,0,0.58,1))
cubic-bezier(n,n,n,n) 在 cubic-bezier 函數中定義自己的值。可能的值是 0 至 1 之間的數值。推薦個有意思的鏈接,貝塞爾曲線鏈接








4. animation-delay

animation-delay 值以秒或毫秒計。
animation-delay 屬性定義動畫何時開始。
提示:允許負值,-2s 使動畫馬上開始,但跳過 2 秒進入動畫。
	animation-delay: time;

描述
time 可選。定義動畫開始前等待的時間,以秒或毫秒計。默認值是 0。



5. animation-iteration-count

animation-iteration-count 屬性定義動畫的播放次數。
	animation-iteration-count: n|infinite;

描述
n 定義動畫播放次數的數值。
infinite 規定動畫應該無限次播放。




6. animation-direction

animation-direction屬性規定動畫是否循環播放
	animation-direction:normal|alternate;



7. animation-fill-mode

animation-fill-mode 屬性規定動畫在播放之前或之後,其動畫效果是否可見。
註釋:其屬性值是由逗號分隔的一個或多個填充模式關鍵詞。
animation-fill-mode 是不能被定義在animation簡寫屬性裏面的,只能定義在animation簡寫屬性的外面
	animation-fill-mode : none | forwards | backwards | both;

描述
none 不改變默認行爲。
forwards 當動畫完成後,保持最後一個屬性值(在最後一個關鍵幀中定義)。
backwards 在 animation-delay 所指定的一段時間內,在動畫顯示之前,應用開始屬性值(在第一個關鍵幀中定義)。
both 向前和向後填充模式都被應用。






8. animation-play-state

animation-play-state 屬性規定動畫正在運行還是暫停。
animation-play-state 是不能被定義在animation簡寫屬性裏面的,只能定義在animation簡寫屬性的外面
	animation-play-state: paused|running;

描述
paused 規定動畫已暫停。
running 規定動畫正在播放。







二丶介紹下他們的使用情況吧

動畫

通過 CSS3,我們能夠創建動畫,這可以在許多網頁中取代動畫圖片、Flash 動畫以及 JavaScript。

CSS3 @keyframes 規則

如需在 CSS3 中創建動畫,您需要學習 @keyframes 規則。
@keyframes 規則用於創建動畫。在 @keyframes 中規定某項 CSS 樣式,就能創建由當前樣式逐漸改爲新樣式的動畫效果。
當您在 @keyframes 中創建動畫時,請把它捆綁到某個選擇器,否則不會產生動畫效果。
下面是我們實現動畫的過程了
首先,先寫個字體出來吧!就一我上一篇介紹的火焰字好了!上篇的代碼對這篇的代碼不會有干擾的

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>小效果</title>

	<style type="text/css">
		/*通配符重置瀏覽器默認的兩個值,
		對本文沒有太大影響,不知道可以無視*/
		*{
			margin: 0;
			padding: 0;
		}
		.div1{
			width: 300px;
			height: 100px;
			padding-top: 20px;
			line-height: 100px;
			margin:200px auto 0;
			text-align: center;
			font-size: 40px;
			font-weight: bold;
			font-family: "華文行楷";
			background: #000;
			color:#F60;
			text-shadow: 0px 0px 2px #fff,
					0px -3px 3px #1EB,
					0px -6px 4px #01DEFD,
					0px -9px 5px #0BF,
					0px -12px 6px #08F;
		}
	</style>
</head>
<body>
	<div class="div1">超炫火焰字</div>
</body>
</html>


效果如圖:


1.animation-name

我們在color後面添加一個animation-name動畫名字吧
	animation-name:myanim;


然後我們接續創建一個@keyframes{}動畫

		/*記住這個不用放到div1類名裏面的*/
		@keyframes myanim{
			0%{
				text-shadow: 0 0 0 #000;
			}
			100%{
				text-shadow: 0px 0px 2px #fff,
					0px -3px 3px #1EB,
					0px -6px 4px #01DEFD,
					0px -9px 5px #0BF,
					0px -12px 6px #08F;
			}
		}
	


我們就會發現暫時是沒有效果的,因爲我們沒有添加完成的時間

3.animation-timing-function

我們在animation-duration後面添加一個animation-timing-function動畫整個過程的動畫的速度曲線
	animation-timing-function:linear;


我們就會發現沒什麼效果,因爲這個是速度,速度爲勻速嘛!你們也可以將速度改變就可以了

4.animation-delay

我們在animation-timing-function後面添加一個animation-delay動畫延遲的時間爲2s吧
	animation-duration:2s;


我們就會發現出現了一個動畫被延遲了2s後纔開始完成的一次動畫

5.animation-iteration-count

我們在animation-timing-function後面添加一個animation-iteration-count動畫的次數吧
	animation-iteration-count:2;


我們就會發現動畫被播放2次

6.animation-direction

我們在animation-delay後面添加一個animation-direction動畫是否循環播放吧
	animation-direction:alternate;


我們就會發現出現了一個動畫是慢慢出來,然後慢慢縮回去的?

7.animation-fill-mode

我們在animation-direction後面添加一個animation-fill-mode,讓動畫在動畫之外是否保持動畫的狀態,並且將次數改爲3
	animation-fill-mode:both;


我們就會發現出現了一個動畫先出來,然後回去,再出來,這樣就經過3次之後就完全停在了最後的狀態是不是並沒有像剛纔那樣閃回去了?還有一個暫時屬性的,很少用到就不在這講解了,你們可以嘗試給hover效果時添加這個屬性,那麼當鼠標移進的時候就會觸發動畫的暫停效果了

好了這次文章介紹的動畫就到此結束了


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章