過(guò)渡和動(dòng)畫(huà)

transition(過(guò)渡)

在CSS3引入transition之前css沒(méi)有時(shí)間軸鸽照,所有的狀態(tài)變化都是瞬間完成

div{
    height:15px;
    width:15px;
}

div:hover{
    height: 450px;
    width: 450px;
}

transition的作用在于颠悬,指定狀態(tài)變化所需要的時(shí)間

transition: 1s;

指定屬性

我們還可以指定transition適用的屬性,比如只適用于height

transition: 1s height;

這樣一來(lái)诞外,只有height的變化需要1秒實(shí)現(xiàn)灾票,其他變化(主要是width)依然瞬間實(shí)現(xiàn),在同一行transition語(yǔ)句中刊苍,可以分別指定多個(gè)屬性

transition: 1s height, 1s width;

delay(延時(shí))

我們還可以指定變化的延時(shí)開(kāi)始,比如這個(gè)地方我們希望讓height先發(fā)生變化啥纸,等結(jié)束以后,再讓width發(fā)生變化脾拆, 我們只需要為width指定一個(gè)delay參數(shù)

transition: 1s height, 1s 1s width;

上面代碼指定莹妒,width在1秒之后,再開(kāi)始變化旨怠,也就是延遲(delay)1秒

delay的真正意義在于,它指定了動(dòng)畫(huà)發(fā)生的順序鉴腻,使得多個(gè)不同的transition可以連在一起百揭,形成復(fù)雜效果

transition-timing-function

transition的狀態(tài)變化速度(又稱timing function)蜓席,默認(rèn)不是勻速的,而是逐漸放慢祈秕,這叫做ease
除了ease以外雏胃,其他模式還包括

  • linear:勻速
  • ease-in:加速
  • ease-out:減速
  • cubic-bezier函數(shù)(貝塞爾函數(shù))

貝塞爾函數(shù)工具

語(yǔ)法

transition: 1s 1s height ease;

這其實(shí)是一個(gè)簡(jiǎn)寫(xiě)形式,可以單獨(dú)定義成各個(gè)屬性

transition-property: height;
transition-duration: 1s;
transition-delay: 1s;
transition-timing-function: ease;

注意事項(xiàng)

  • 目前瞭亮,各大瀏覽器(包括IE 10)都已經(jīng)支持無(wú)前綴的transition,所以transition已經(jīng)可以很安全地不加瀏覽器前綴
  • transition需要明確知道仙蚜,開(kāi)始狀態(tài)和結(jié)束狀態(tài)的具體數(shù)值,才能計(jì)算出中間狀態(tài)鳍征,什么none到block之類(lèi)的是不行的
  • transition是一次性的面徽,不能重復(fù)發(fā)生匣掸,除非一再觸發(fā)

事件

transitionend

  • transitionend 事件會(huì)在 CSS transition 結(jié)束后觸發(fā).
  • 當(dāng)transition完成前移除transition時(shí),比如移除css的transition-property 屬性碰酝,事件將不會(huì)被觸發(fā).如在transition完成前設(shè)置 display: none,事件同樣不會(huì)被觸發(fā).
  • 幾個(gè)屬性發(fā)生了變化就觸發(fā)幾次,比如
div{
  transition: height 1s, width 1s;
}
div:hover{
  width: 100px;
  height: 100px;
}

一次hover會(huì)觸發(fā)兩次transitionend事件
  • 注意不同瀏覽器中的前綴
    • webkitTransitionEnd
    • mozkitTransitionEnd

animation(動(dòng)畫(huà))

transition 比較簡(jiǎn)單铛嘱,animation可以幫我們實(shí)現(xiàn)復(fù)雜的動(dòng)畫(huà)

基本用法
@keyframes change-color{
  0% { 
    background: red;
  }
  50%{
    background: blue;
  }
  100%{
    background: orange;
  }
}
div{
  height: 100px;
  width: 200px;
  border: 1px solid #111;
 
}
div:hover{
    animation-name: change-color;
    animation-duration: 2s;
}

我們使用keyframes(關(guān)鍵幀)來(lái)定義一個(gè)動(dòng)畫(huà)效果, change-color是我們?nèi)〉脛?dòng)畫(huà)名字袭厂,每個(gè)百分比后面寫(xiě)的是相應(yīng)時(shí)間點(diǎn)我關(guān)鍵幀樣式,
定義好后纹磺,在animation(動(dòng)畫(huà))屬性中調(diào)用,2s 表示的動(dòng)畫(huà)的持續(xù)時(shí)間

指定播放次數(shù)(animation-iteration-count)

默認(rèn)情況下秘症,動(dòng)畫(huà)只會(huì)播放一次, 我們可以指定動(dòng)畫(huà)具體播放的次數(shù)乡摹,比如3次:

div:hover {
    animation-name: change-color;
    animation-duration: 2s;
    animation-iteration-count: 3;
}

也可以無(wú)線循環(huán)播放:

div:hover {
    animation-name: change-color;
    animation-duration: 2s;
    animation-iteration-count: infinite;
}

心跳demo

延時(shí)(animation-delay)

animation-timing-function

動(dòng)畫(huà)播放前后的狀態(tài)(animation-fill-mode)

animation-fill-mode: none | backwards | forwards| both;
  • none: 動(dòng)畫(huà)執(zhí)行前后不改變?nèi)魏螛邮?/li>
  • forwards: 動(dòng)畫(huà)結(jié)束后的目標(biāo)保持動(dòng)畫(huà)最后一幀的樣式
  • backwards: 動(dòng)畫(huà)開(kāi)始前目標(biāo)保持動(dòng)畫(huà)第一幀的樣式(必須配合延時(shí)才能看到效果, 如果設(shè)置為backwards, 延時(shí)期間的樣式是動(dòng)畫(huà)第一幀的樣式, 否則延時(shí)期間是目標(biāo)默認(rèn)樣式)
  • both: 同時(shí)應(yīng)用forwards和 backwards

動(dòng)畫(huà)播放的方向(animation-direction)

動(dòng)畫(huà)連續(xù)播放時(shí)聪廉,每次都是從結(jié)束狀態(tài)跳回到起始狀態(tài)瞬痘,再開(kāi)始播放锄列。animation-direction屬性,可以改變這種行為

animation-direction可以使用下列值:

  • normal: 正常播放, 默認(rèn)值;
  • reverse: 倒著播放
  • alternate: 第一次正常播放, 第二倒著播放, .. 這樣交替的循環(huán)下去
  • alternate-reverse: 第一次倒著播放, 第二次正常播放, .. 這樣交替的循環(huán)下去

下圖解釋了它的規(guī)律(假定動(dòng)畫(huà)連續(xù)播放三次)


簡(jiǎn)單說(shuō)竣况,animation-direction指定了動(dòng)畫(huà)播放的方向筒严,最常用的值是normal和reverse。瀏覽器對(duì)其他值的支持情況不佳鸭蛙,應(yīng)該慎用

語(yǔ)法

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

簡(jiǎn)寫(xiě)


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

例子:

div:hover {
  animation: 1s 1s change-color linear 3 forwards normal;
}

keyframes關(guān)鍵字用來(lái)定義動(dòng)畫(huà)的各個(gè)狀態(tài),它的寫(xiě)法相當(dāng)自由

@keyframes change-color {
  0% { background: #c00 }
  50% { background: orange }
  100% { background: yellowgreen }
}

0%可以用from代表晒哄,100%可以用to代表肪获,因此上面的代碼等同于下面的形式

@keyframes change-color {
  from { background: #c00 }
  50% { background: orange }
  to { background: yellowgreen }
}

如果省略某個(gè)狀態(tài),瀏覽器會(huì)自動(dòng)推算中間狀態(tài)孝赫,所以下面都是合法的寫(xiě)法。

@keyframes change-color {
  50% { background: orange }
  to { background: yellowgreen }
}

@keyframes change-color {
  to { background: yellowgreen }
}

甚至伐债,可以把多個(gè)狀態(tài)寫(xiě)在一行致开。

div:hover {
  animation: 1s change-color infinite steps(10);
}

另外一點(diǎn)需要注意的是,瀏覽器從一個(gè)狀態(tài)向另一個(gè)狀態(tài)過(guò)渡双戳,是平滑過(guò)渡。steps函數(shù)可以實(shí)現(xiàn)分步過(guò)渡。

div:hover {
  animation: 1s change-color infinite steps(10);
}

文字輸入效果demo

animation-play-state

有時(shí)耍目,動(dòng)畫(huà)播放過(guò)程中徐绑,會(huì)突然停止浓镜。這時(shí)鸿摇,默認(rèn)行為是跳回到動(dòng)畫(huà)的開(kāi)始狀態(tài)洪灯,如果想讓動(dòng)畫(huà)保持突然終止時(shí)的狀態(tài),就要使用animation-play-state屬性喻粹。

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

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

工具

CSS3 Tool

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末草巡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子山憨,更是在濱河造成了極大的恐慌,老刑警劉巖玛迄,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棚亩,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡讥蟆,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)州弟,“玉大人,你說(shuō)我怎么就攤上這事婆翔。” “怎么了啃奴?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)依溯。 經(jīng)常有香客問(wèn)我,道長(zhǎng)黎炉,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任淀弹,我火速辦了婚禮庆械,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缭乘。我一直安慰自己,他們只是感情好忿峻,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著垄惧,像睡著了一般绰寞。 火紅的嫁衣襯著肌膚如雪到逊。 梳的紋絲不亂的頭發(fā)上滤钱,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天件缸,我揣著相機(jī)與錄音铜靶,去河邊找鬼他炊。 笑死,一個(gè)胖子當(dāng)著我的面吹牛痊末,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播涩笤,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蹬碧!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起呢蔫,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤飒筑,失蹤者是張志新(化名)和其女友劉穎片吊,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體协屡,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡俏脊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肤晓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片爷贫。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖补憾,靈堂內(nèi)的尸體忽然破棺而出漫萄,到底是詐尸還是另有隱情,我是刑警寧澤盈匾,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布腾务,位于F島的核電站,受9級(jí)特大地震影響削饵,放射性物質(zhì)發(fā)生泄漏岩瘦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一窿撬、第九天 我趴在偏房一處隱蔽的房頂上張望启昧。 院中可真熱鬧劈伴,春花似錦密末、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至赡模,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間师抄,已是汗流浹背漓柑。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人辆布。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓瞬矩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親锋玲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子景用,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

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

  • 過(guò)渡和動(dòng)畫(huà) transition(過(guò)渡) 在CSS3引入transition之前css沒(méi)有時(shí)間軸,所有的狀態(tài)變化都...
    卓小生閱讀 188評(píng)論 0 1
  • transition(過(guò)渡) 在CSS3引入transition之前css沒(méi)有時(shí)間軸惭蹂,所有的狀態(tài)變化都是瞬間完成 ...
    風(fēng)隨風(fēng)去閱讀 706評(píng)論 0 1
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類(lèi)選擇器 屬性選擇器 繼承屬性: color伞插,font,text-align盾碗,li...
    love2013閱讀 2,315評(píng)論 0 11
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類(lèi)選擇器 屬性選擇器 繼承屬性: color媚污,font,text-align廷雅,li...
    wzhiq896閱讀 1,755評(píng)論 0 2
  • 寫(xiě)作感想: 一耗美、從零開(kāi)始,感謝姚校長(zhǎng)“督促”和指導(dǎo)航缀,他建議我先思考人物的學(xué)科特征與列出寫(xiě)作提綱商架。我通過(guò)與肖老師兩次...
    采苓閱讀 559評(píng)論 1 1