Keyframes被稱爲關鍵幀,其相似於Flash中的關鍵幀。在CSS3中其主要以「@keyframes」開頭,後面緊跟着是動畫名稱加上一對花括號「{…}」,括號中就是一些不一樣時間段樣式規則。css
@keyframes changecolor{
0%{
background: red;
}
100%{
background: green;
}
}
複製代碼
在一個「@keyframes」中的樣式規則能夠由多個百分比構成的,如在「0%」到「100%」之間建立更多個百分比,分別給每一個百分比中給須要有動畫效果的元素加上不一樣的樣式,從而達到一種在不斷變化的效果。css3
經驗與技巧:在@keyframes中定義動畫名稱時,其中0%和100%還可使用關鍵詞from和to來表明,其中0%對應的是from,100%對應的是to。web
瀏覽器的支持狀況: 瀏覽器
Chrome 和 Safari 須要前綴 -webkit-;Foxfire 須要前綴 -moz-。 案例演示 經過「@keyframes」聲明一個名叫「wobble」的動畫,從「0%」開始到「100%」結束,同時還經歷了一個「40%」和「60%」兩個過程。「wobble」動畫在「0%」時元素定位到left爲100px,背景色爲green,而後在「40%」時元素過渡到left爲150px,背景色爲orange,接着在「60%」時元素過渡到left爲75px,背景色爲blue,最後「100%」時結束動畫,元素又回到起點left爲100px處,背景色變爲red。 HTML:wordpress
<div>鼠標放到我身上</div>
CSS:
@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;
}
}
div {
width: 100px;
height: 100px;
background:red;
color: #fff;
}
div:hover{
animation: wobble 5s ease .1s;
}
複製代碼
animation-name屬性主要是用來調用 @keyframes 定義好的動畫。須要特別注意: animation-name 調用的動畫名須要和「@keyframes」定義的動畫名稱徹底一致(區分大小寫),若是不一致將不具備任何動畫效果。 語法:動畫
animation-name: none | IDENT[,none|DENT]*;
複製代碼
一、IDENT是由 @keyframes 建立的動畫名,上面已經講過了(animation-name 調用的動畫名須要和「@keyframes」定義的動畫名稱徹底一致); 二、none爲默認值,當值爲 none 時,將沒有任何動畫效果,這能夠用於覆蓋任何動畫。 注意:須要在 Chrome 和 Safari 上面的基礎上加上-webkit-前綴,Firefox加上-moz-。spa
@keyframes around{
0% {
transform: translateX(0);
}
25%{
transform: translateX(180px);
}
50%{
transform: translate(180px, 180px);
}
75%{
transform:translate(0,180px);
}
100%{
transform: translateY(0);
}
}
div {
width: 200px;
height: 200px;
border: 1px solid red;
margin: 20px auto;
}
div span {
display: inline-block;
width: 20px;
height: 20px;
background: orange;
border-radius: 100%;
animation-name:around;
animation-duration: 10s;
animation-timing-function: ease;
animation-delay: 1s;
animation-iteration-count:infinite;
}
複製代碼
animation-duration主要用來設置CSS3動畫播放時間,其使用方法和transition-duration相似,是用來指定元素播放動畫所持續的時間長,也就是完成從0%到100%一次動畫所需時間。單位:S秒 語法規則3d
animation-duration: <time>[,<time>]*
複製代碼
取值code
設置動畫播放方式orm
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(, , , )]* 它和transition中的transition-timing-function同樣,具備如下幾種變換方式:ease,ease-in,ease-in-out,ease-out,linear和cubic-bezier。對應功以下:
在調用move動畫播放中,讓元素樣式從初始狀態到終止狀態時,先加速再減速,也就是漸顯漸隱效果。animation-delay屬性用來定義動畫開始播放的時間,用來觸發動畫播放的時間點。和transition-delay屬性同樣,用於定義在瀏覽器開始執行動畫以前等待的時間。
animation-iteration-count屬性主要用來定義動畫的播放次數。 語法規則: animation-iteration-count: infinite | [, infinite | ]* 一、其值一般爲整數,但也可使用帶有小數的數字,其默認值爲1,這意味着動畫將從開始到結束只播放一次。 二、若是取值爲infinite,動畫將會無限次的播放。 舉例: 經過animation-iteration-count屬性讓動畫move只播放5次,代碼設置爲: animation-iteration-count:5; 注意:Chrome或Safari瀏覽器,須要加入-webkit-前綴!
animation-direction屬性主要用來設置動畫播放方向,其語法規則以下: animation-direction:normal | alternate [, normal | alternate]* 其主要有兩個值:normal、alternate 一、normal是默認值,若是設置爲normal時,動畫的每次循環都是向前播放; 二、另外一個值是alternate,他的做用是,動畫播放在第偶數次向前播放,第奇數次向反方向播放。
animation-play-state屬性主要用來控制元素動畫的播放狀態。 參數: 其主要有兩個值:running和paused。 其中running是其默認值,主要做用就是相似於音樂播放器同樣,能夠經過paused將正在播放的動畫停下來,也能夠經過running將暫停的動畫從新播放,這裏的從新播放不必定是從元素動畫的開始播放,而是從暫停的那個位置開始播放。另外若是暫停了動畫的播放,元素的樣式將回到最原始設置狀態。
@keyframes move {
0%{
transform: translateY(90px);
}
15%{
transform: translate(90px,90px);
}
30%{
transform: translate(180px,90px);
}
45%{
transform: translate(90px,90px);
}
60%{
transform: translate(90px,0);
}
75%{
transform: translate(90px,90px);
}
90%{
transform: translate(90px,180px);
}
100%{
transform: translate(90px,90px);
}
}
div {
width: 200px;
height: 200px;
border: 1px solid red;
margin: 20px auto;
}
span {
display: inline-block;
width: 20px;
height: 20px;
background: orange;
transform: translateY(90px);
animation-name: move;
animation-duration: 10s;
animation-timing-function: ease-in;
animation-delay: .2s;
animation-iteration-count:infinite;
animation-direction:alternate;
animation-play-state:paused;
}
div:hover span {
animation-play-state:running;
}
複製代碼
animation-fill-mode屬性定義在動畫開始以前和結束以後發生的操做。主要具備四個屬性值:none、forwards、backwords和both。其四個屬性值對應效果以下:
屬性值 | 效果 |
---|---|
none | 默認值,表示動畫將按預期進行和結束,在動畫完成其最後一幀時,動畫會反轉到初始幀處 |
forwards | 表示動畫在結束後繼續應用最後的關鍵幀的位置 |
backwards | 會在向元素應用動畫樣式時迅速應用動畫的初始幀 |
both | 元素動畫同時具備forwards和backwards效果 |
在默認狀況之下,動畫不會影響它的關鍵幀以外的屬性,使用animation-fill-mode屬性能夠修改動畫的默認行爲。簡單的說就是告訴動畫在第一關鍵幀上等待動畫開始,或者在動畫結束時停在最後一個關鍵幀上而不回到動畫的第一幀上。或者同時具備這兩個效果。 例如:讓動畫停在最一幀處。代碼以下: animation-fill-mode:forwards;
好吧,CSS3 3D transform變換,不過如此,更多細節參考連接: www.zhangxinxu.com/wordpress/2…