【CSS3】CSS3動畫——我離前端的炫酷又近了一步

【CSS3】CSS3動畫——我離前端的炫酷又近了一步

博客說明

文章所涉及的部分資料來自互聯(lián)網(wǎng)整理植康,當(dāng)然還有自己個人的總結(jié)和看法旷太,分享的目的在于共建社區(qū)和鞏固自己。引用的資料如有侵權(quán)销睁,請聯(lián)系本人刪除供璧!幸好我在,感謝你來冻记!

說明

CSS3 可實(shí)現(xiàn) HTML 元素的動畫效果睡毒,而不使用 JavaScript 或 Flash。

為了學(xué)習(xí)前端的動效冗栗,我簡直是不折手段演顾。目前就抓著CSS的動畫來搞一波。

什么是動畫

?老規(guī)矩隅居,問句開頭钠至。

在需要變化的時間節(jié)點(diǎn)上指定一些關(guān)鍵幀,關(guān)鍵幀就是此刻所定義的樣式胎源。例如我在1s左移5m棉钧,3s左一15m,這時就有兩個關(guān)鍵幀涕蚤,因?yàn)檫@兩個關(guān)鍵幀宪卿,畫面就發(fā)生了位移,那么動畫也就產(chǎn)生了赞季。

下面這句話總結(jié)到位:動畫使元素逐漸從一種樣式變?yōu)榱硪环N樣式愧捕。

CSS3的動畫主要依賴@keyframesanimation來實(shí)現(xiàn)。

@keyframes和animation的瀏覽器支持

image-20211124192418101

@keyframes 規(guī)則

@keyframes 規(guī)則是創(chuàng)建動畫申钩。

@keyframes 規(guī)則內(nèi)指定一個 CSS 樣式和動畫將逐步從目前的樣式更改為新的樣式次绘。

@keyframes myfirst
{
    from {background: red;}
    to {background: yellow;}
}

以上的就是一個簡單的動畫,關(guān)鍵詞 "from" 和 "to"撒遣,等同于 0% 和 100%邮偎。0% 是動畫的開始,100% 是動畫的完成义黎。也就是從紅色變成黃色禾进。

為了得到最佳的瀏覽器支持,使用 0% 和 100% 選擇器是最好的選擇廉涕。

animation

animation既然動畫的關(guān)鍵幀都有了泻云,那么就需要把這個關(guān)鍵幀落實(shí)并綁定到某個DOM上艇拍。

語法

可以一起寫,也可以分開寫屬性宠纯。

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

animation-name

指定要綁定到選擇器的關(guān)鍵幀的名稱

語法

animation-name: keyframename|none;
// keyframename 指定要綁定到選擇器的關(guān)鍵幀的名稱

animation-duration

動畫指定需要多少秒或毫秒完成

語法

animation-duration: time;
// time 指定動畫播放完成花費(fèi)的時間卸夕。

animation-timing-function

指定動畫將如何完成一個周期

語法

animation-timing-function: value;

動畫函數(shù)

  • linear 動畫從頭到尾的速度是相同的。

  • ease 默認(rèn)婆瓜。動畫以低速開始快集,然后加快,在結(jié)束前變慢廉白。

  • ease-in 動畫以低速開始

  • ease-out 動畫以低速結(jié)束个初。

  • ease-in-out 動畫以低速開始和結(jié)束。

  • steps(int,start|end)指定了時間函數(shù)中的間隔數(shù)量(步長)猴蹂。

    有兩個參數(shù)院溺,第一個參數(shù)指定函數(shù)的間隔數(shù),該參數(shù)是一個正整數(shù)(大于 0)晕讲。

    第二個參數(shù)是可選的覆获,表示動畫是從時間段的開頭連續(xù)還是末尾連續(xù)。

  • cubic-bezier(n,n,n,n) 貝塞爾曲線

    給一個貝塞爾曲線的的一個網(wǎng)站瓢省,你會感謝??我的哈弄息!地址

animation-delay

定義動畫什么時候開始,單位可以是秒(s)或毫秒(ms)

語法

animation-delay: time;
// time 定義動畫開始前等待的時間勤婚,以秒或毫秒計

animation-iteration-count

定義動畫應(yīng)該播放多少次摹量。

語法

animation-iteration-count: value;
//  n 定義應(yīng)該播放多少次動畫
//  infinite 指定動畫應(yīng)該播放無限次(永遠(yuǎn))

animation-direction

是否循環(huán)交替反向播放動畫。

這個是一個可玩性很高的一個屬性馒胆。

語法

animation-direction: normal|reverse|alternate|alternate-reverse|initial|inherit;

參數(shù)解析

  • normal 默認(rèn)值缨称。動畫按正常播放。
  • reverse 動畫反向播放祝迂。
  • alternate 動畫在奇數(shù)次(1睦尽、3、5...)正向播放型雳,在偶數(shù)次(2当凡、4、6...)反向播放纠俭。
  • alternate-reverse 動畫在奇數(shù)次(1沿量、3、5...)反向播放冤荆,在偶數(shù)次(2朴则、4、6...)正向播放钓简。
  • initial 繼承的屬性
  • inherit 繼承的屬性

animation-fill-mode

屬性規(guī)定當(dāng)動畫不播放時(當(dāng)動畫完成時乌妒,或當(dāng)動畫有一個延遲未開始播放時)汹想,要應(yīng)用到元素的樣式。

如果你需要考慮到動畫的狀態(tài)芥被,可以使用這個屬性欧宜,比如保留動畫改變后的效果坐榆。

語法

animation-fill-mode: none|forwards|backwards|both|initial|inherit;

參數(shù)解析

  • none 默認(rèn)值拴魄。動畫在動畫執(zhí)行之前和之后不會應(yīng)用任何樣式到目標(biāo)元素。
  • forwards 在動畫結(jié)束后(由 animation-iteration-count 決定)席镀,動畫將應(yīng)用該屬性值匹中。
  • backwards 動畫將應(yīng)用在 animation-delay 定義期間啟動動畫的第一次迭代的關(guān)鍵幀中定義的屬性值。
  • both 動畫遵循 forwards 和 backwards 的規(guī)則豪诲。
  • initial 繼承的屬性
  • inherit 繼承的屬性

animation--play-state

指定動畫是否正在運(yùn)行或已暫停顶捷。

語法

animation-play-state: paused|running;
// paused 指定暫停動畫
// running 指定正在運(yùn)行的動畫

案例

顏色變換

div的顏色由紅色變?yōu)辄S色

代碼

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"> 
<title>動畫測試</title> 
<style> 
div
{
    width:100px;
    height:100px;
    background:red;
    animation:myfirst 6s;
}

@keyframes myfirst
{
    from {background:red;}
    to {background:yellow;}
}
</style>
</head>
<body>
<div></div>
</body>
</html>

效果

2021-12-26 19.07.42

順時鐘移動

將div順時針移動

代碼

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"> 
<title>動畫測試</title> 
<style> 
div
{
    width:100px;
    height:100px;
    background:red;
    position:relative;
    animation:myfirst 5s linear 2s;
}

@keyframes myfirst
{
    0%   {background:red; left:0px; top:0px;}
    25%  {background:yellow; left:200px; top:0px;}
    50%  {background:blue; left:200px; top:200px;}
    75%  {background:green; left:0px; top:200px;}
    100% {background:red; left:0px; top:0px;}
}
</style>
</head>
<body>
<div></div>
</body>
</html>

效果

2021-12-26 19.03.06

總結(jié)

其實(shí)也看到這些基礎(chǔ)的動畫,其實(shí)實(shí)現(xiàn)起來并不復(fù)雜屎篱,那些復(fù)雜的動畫也都是通過這樣基礎(chǔ)的動畫構(gòu)建的服赎。但是是不是會有一個疑問,怎么記得住這樣的屬性的使用呢交播?

這個問題和問PS的快捷鍵怎么也記不住是一樣的重虑,因?yàn)槎紱]有經(jīng)常使用,怎么記得住秦士。等畫了上百個復(fù)雜動畫之后缺厉,相信就會對這個動畫有比較好的了解啦!

期待后續(xù)花樣的動畫案例吧隧土!一切才剛剛開始提针!

感謝

萬能的網(wǎng)絡(luò)

以及勤勞的自己,個人博客曹傀,GitHub測試辐脖,GitHub

公眾號-歸子莫,小程序-小歸博客

如果你感覺對你有幫助的話皆愉,不妨給我點(diǎn)贊??吧票堵,持續(xù)關(guān)注也行哈赡盘!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子靡菇,更是在濱河造成了極大的恐慌,老刑警劉巖琢歇,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谆甜,死亡現(xiàn)場離奇詭異,居然都是意外死亡届吁,警方通過查閱死者的電腦和手機(jī)错妖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門绿鸣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人暂氯,你說我怎么就攤上這事潮模。” “怎么了痴施?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵擎厢,是天一觀的道長。 經(jīng)常有香客問我辣吃,道長动遭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任神得,我火速辦了婚禮厘惦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘哩簿。我一直安慰自己宵蕉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布节榜。 她就那樣靜靜地躺著羡玛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪全跨。 梳的紋絲不亂的頭發(fā)上缝左,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機(jī)與錄音浓若,去河邊找鬼渺杉。 笑死,一個胖子當(dāng)著我的面吹牛挪钓,可吹牛的內(nèi)容都是我干的是越。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼碌上,長吁一口氣:“原來是場噩夢啊……” “哼倚评!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起馏予,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤天梧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后霞丧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呢岗,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了后豫。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悉尾。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖挫酿,靈堂內(nèi)的尸體忽然破棺而出构眯,到底是詐尸還是另有隱情,我是刑警寧澤早龟,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布惫霸,位于F島的核電站,受9級特大地震影響拄衰,放射性物質(zhì)發(fā)生泄漏它褪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一翘悉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧居触,春花似錦妖混、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至弊予,卻和暖如春祥楣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背汉柒。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工误褪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人碾褂。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓兽间,卻偏偏與公主長得像,于是被迫代替她去往敵國和親正塌。 傳聞我的和親對象是個殘疾皇子嘀略,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

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