【CSS】CSS3動(dòng)畫

CSS3動(dòng)畫

CreateTime: 2016-09-07 11:14:32
Author: zhongxia

CSS3的動(dòng)畫效果是一個(gè)很有用的功能,可以很方便的實(shí)現(xiàn)了早期只能用JS來實(shí)現(xiàn)的動(dòng)畫效果。這里主要講解CSS3的動(dòng)畫

CSS3動(dòng)畫 transition 和 animation

一、transition (過度)

在沒有出現(xiàn)transition之前,CSS是沒有時(shí)間軸的籽懦,狀態(tài)變化是即時(shí)完成的。

最簡(jiǎn)單的使用方法

/*==================最基本用法=====================*/
img{
    width:20px;
    height:20px;
    transition: 1s;  /*設(shè)置CSS屬性變化過度的時(shí)間*/
}
img:hover{
    width:200px;
    height:200px;
}

/*==================完整例子=====================*/
img{
    transition: 2s 1s height ease;  
}

img{
    transition-property: height;        /*CSS狀態(tài)值需要過度的屬性*/
    transition-duration: 2s;            /*過度時(shí)間*/
    transition-delay: 1s;               /*延遲時(shí)間*/

    transition-timing-function: ease;   
    /*狀態(tài)變化速度(ease 逐漸放慢、linear 勻速思喊、ease-in 加速、ease-out 減速次酌、cubic-bezier函數(shù):自定義速度模式)*/
}


cubic-bezier 可以使用工具網(wǎng)站來實(shí)現(xiàn) 工具網(wǎng)站

transition的使用注意

  • 各大瀏覽器(IE10+)支持不加前綴的 transition恨课。

  • 不是所有的CSS屬性都只是 transition舆乔。 完整列表

  • transition需要明確知道,開始狀態(tài)和結(jié)束狀態(tài)的具體數(shù)值剂公,才能計(jì)算出中間狀態(tài)希俩。比如,height從0px變化到100px纲辽,transition可以算出中間狀態(tài)颜武。但是,transition沒法算出0px到auto的中間狀態(tài)文兑,也就是說盒刚,如果開始或結(jié)束的設(shè)置是height: auto,那么就不會(huì)產(chǎn)生動(dòng)畫效果绿贞。類似的情況還有因块,display: none到block,background: url(foo.jpg)到url(bar.jpg)等等籍铁。

transition的局限

transition的優(yōu)點(diǎn)在于簡(jiǎn)單易用涡上,但是它有幾個(gè)很大的局限。

  • transition需要事件觸發(fā)拒名,所以沒法在網(wǎng)頁加載時(shí)自動(dòng)發(fā)生吩愧。

  • transition是一次性的,不能重復(fù)發(fā)生增显,除非一再觸發(fā)雁佳。

  • transition只能定義開始狀態(tài)和結(jié)束狀態(tài),不能定義中間狀態(tài)同云,也就是說只有兩個(gè)狀態(tài)糖权。

  • 一條transition規(guī)則,只能定義一個(gè)屬性的變化炸站,不能涉及多個(gè)屬性星澳。
    CSS Animation就是為了解決這些問題而提出的。

二旱易、animation (動(dòng)畫)

/*定義一個(gè)動(dòng)畫效果*/
@-webkit-keyframes rainbow {
  0% { background: #c00; }
  50% { background: orange; }
  100% { background: yellowgreen; }
}

@keyframes rainbow {
  0% { background: #c00; }
  50% { background: orange; }
  100% { background: yellowgreen; }
}

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

/*hover 使用這個(gè)動(dòng)畫效果*/
div:hover{
    -webkit-animation: 1s rainbow; 
    animation: 1s rainbow;  /*默認(rèn)播放一次*/
} 
/*==================animation簡(jiǎn)寫======================*/
animation: 1s rainbow infinite; /*無限次播放*/
animation: 1s rainbow 10; /*播放10次*/

div:hover {
  animation: 2s 1s rainbow linear 3 forwards normal;
}

div:hover {
  animation-name: rainbow;
  animation-duration: 2s;
  animation-timing-function: linear;
  animation-delay: 1s;
  animation-fill-mode:forwards;
  animation-direction: normal; 
  animation-iteration-count: 3;
}

animation-fill-mode: 動(dòng)畫結(jié)束以后禁偎,會(huì)立即從結(jié)束狀態(tài)跳回到起始狀態(tài)。如果想讓動(dòng)畫保持在結(jié)束狀態(tài)阀坏,需要使用animation-fill-mode屬性如暖。

  • none:默認(rèn)值,回到動(dòng)畫沒開始時(shí)的狀態(tài)全释。
  • backwards:讓動(dòng)畫回到第一幀的狀態(tài)装处。
  • both: 根據(jù)animation-direction(見后)輪流應(yīng)用forwards和backwards規(guī)則。

animation-direction:動(dòng)畫循環(huán)播放后浸船,每次播放完都是回到開始的狀態(tài)妄迁,這個(gè)屬性可以修改



簡(jiǎn)單說,animation-direction指定了動(dòng)畫播放的方向李命,最常用的值是normal和reverse登淘。瀏覽器對(duì)其他值的支持情況不佳,應(yīng)該慎用封字。

keyframes

chrome 不支持沒有前綴的 @keyframes ,因此需要加上 @-webkit-keyframes, IE10+ 和 Firefox16+ 支持不加前綴的@keyframes

/*from=0%   to=100%*/
@keyframes rainbow {
  from { background: #c00 }
  50% { background: orange }
  to { background: yellowgreen }
}
/* 上面的 等于 下面這個(gè)寫法*/
@keyframes rainbow {
  0% { background: #c00 }
  50% { background: orange }
  100% { background: yellowgreen }
}

@keyframes pound {
  from黔州,to { transform: none; }
  50% { transform: scale(1.2); }
}

//另外一點(diǎn)需要注意的是,瀏覽器從一個(gè)狀態(tài)向另一個(gè)狀態(tài)過渡阔籽,是平滑過渡流妻。steps函數(shù)可以實(shí)現(xiàn)分步過渡。
div:hover {
  animation: 1s rainbow infinite steps(10);
}

動(dòng)畫播放結(jié)束之后笆制,默認(rèn)回到初始狀態(tài)绅这,這個(gè)時(shí)候就需要使用到 animation-play-state

div {
    animation: spin 1s linear infinite;
    animation-play-state: paused;
}

div:hover {
  animation-play-state: running;
}

參考文章

  1. CSS in the 4th Dimension
  2. CSS3動(dòng)畫簡(jiǎn)介
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市在辆,隨后出現(xiàn)的幾起案子证薇,更是在濱河造成了極大的恐慌,老刑警劉巖匆篓,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浑度,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡鸦概,警方通過查閱死者的電腦和手機(jī)箩张,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來窗市,“玉大人先慷,你說我怎么就攤上這事〗魃瑁” “怎么了熟掂?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)扎拣。 經(jīng)常有香客問我赴肚,道長(zhǎng),這世上最難降的妖魔是什么二蓝? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任誉券,我火速辦了婚禮,結(jié)果婚禮上刊愚,老公的妹妹穿的比我還像新娘踊跟。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布商玫。 她就那樣靜靜地躺著箕憾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拳昌。 梳的紋絲不亂的頭發(fā)上袭异,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音炬藤,去河邊找鬼御铃。 笑死,一個(gè)胖子當(dāng)著我的面吹牛沈矿,可吹牛的內(nèi)容都是我干的上真。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼羹膳,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼睡互!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起溜徙,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤湃缎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蠢壹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嗓违,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年图贸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蹂季。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡疏日,死狀恐怖偿洁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情沟优,我是刑警寧澤涕滋,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站挠阁,受9級(jí)特大地震影響宾肺,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜侵俗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一锨用、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧隘谣,春花似錦增拥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽秩仆。三九已至,卻和暖如春渣玲,著一層夾襖步出監(jiān)牢的瞬間逗概,已是汗流浹背弟晚。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工忘衍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人卿城。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓枚钓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親瑟押。 傳聞我的和親對(duì)象是個(gè)殘疾皇子搀捷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font多望,text-align嫩舟,li...
    love2013閱讀 2,314評(píng)論 0 11
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font怀偷,text-align家厌,li...
    wzhiq896閱讀 1,750評(píng)論 0 2
  • 變形--旋轉(zhuǎn) rotate() 旋轉(zhuǎn)rotate()函數(shù)通過指定的角度參數(shù)使元素相對(duì)原點(diǎn)進(jìn)行旋轉(zhuǎn)。它主要在二維空間...
    阿振_sc閱讀 935評(píng)論 1 5
  • 看了很多視頻椎工、文章饭于,最后卻通通忘記了,別人的知識(shí)依舊是別人的维蒙,自己卻什么都沒獲得掰吕。此系列文章旨在加深自己的印象,因...
    DCbryant閱讀 1,861評(píng)論 0 4
  • 1.CSS3 邊框 border-radius CSS屬性用來設(shè)置邊框圓角颅痊。當(dāng)使用一個(gè)半徑時(shí)確定一個(gè)圓形殖熟;當(dāng)使用兩...
    garble閱讀 643評(píng)論 0 0