精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

CSS 一步一步實現煙花動畫

開發 前端
本文介紹了煙花動畫實現的全過程,可以看到,從簡單到復雜,動畫是一步一步組合疊加而成的。

之前項目上需要做一個煙花動畫,要求是隨機大小,不同地方出現,先看一下效果:

進一步,還能實現彩色的效果,如下

一、選擇合適的動畫

什么樣的場景決定使用什么樣的動畫。比如一些比較輕量、裝飾性的動畫,CSS 動畫就足夠了,而一些對動畫要求比較高的運營活動,創意小游戲等,JS 動畫肯定是首選,必要情況下還需要借助一些圖形庫,比如 Pixi.js。

其次,還需要從學習成本考慮。一般而言,CSS 使用起來更容易,上手成本更低,局部需要稍微復雜的動效可以直接參考已有的庫,例如 Animate.css[1]。JS 可能就復雜一些了,原生 JS 還好,如果是其他圖形庫,又需要面對完全不一樣的 api,都是學習成本。

最后,也需要考慮工程化。例如 lottie-web 本身就已經很大了(532k,壓縮后150k,gzip后也有43k),另外設計導出的動畫 json 文件也會很大,僅僅是為了一個動畫而引入整個 lottie 就有些不劃算了,應該換其他方式。

綜合考慮,煙花動畫可以采用 CSS 實現

二、單個煙花的實現

這里我們可以采取序列幀的方式來實現。比如我會要求設計師導出一組序列幀圖片,像這樣的

然后把這些圖片按照順序合在一張圖片上(很多工具都可以合成),就得到了這樣的圖片

preview

接下來,只需要利用 CSS  動畫函數中的 steps()[2] 功能符,逐幀動畫就完成了

假設有如下 HTML 結構

<div class="fireworks"></div>

CSS 實現為

.fireworks {
position: absolute;
width: 150px;
height: 150px;
background: url('https://imgservices-1252317822.image.myqcloud.com/image/081320210201435/e9951400.png') right top no-repeat;
background-size: auto 150px;
animation: fireworks 1s steps(24) infinite;
}
@keyframes fireworks {
to {
background-position: 100%;
}
}

效果如下:

Kapture 2021-08-21 at 10.49.07

三、隨機位置的煙花

現在煙花每次出現的位置都是相同的,太有規律顯得不那么自然,那么如何實現一會在這里一會在那里的效果呢?這里可以再添加一個關鍵幀,隨便改幾個位置(不一定需要真的隨機,只需要看著不那么規律即可)。

@keyframes random {
25% {
transform: translate(200%, 50%);
}.fireworks {
/* 其他 */
animation: fireworks 1s steps(24) infinite, random 4s infinite;
}
transform: translate(80%, 80%);
}
75% {
transform: translate(20%, 60%);
}
}.fireworks {
/* 其他 */
animation: fireworks 1s steps(24) infinite, random 4s infinite;
}

然后把兩個動畫組合起來:

.fireworks {
/* 其他 */
animation: fireworks 1s steps(24) infinite, random 4s infinite;
}

效果如下:

是不是很奇怪的動畫?原因是在改變位置的時候也是平滑過渡的,所以這個地方也需要加上 steps(),注意這里只需要 steps(1)就可以了,表示這個過程中直接跳到指定關鍵幀就結束了,不會自動在途中創建其他幀。?

.fireworks {
/* 其他 */
animation: fireworks 1s steps(24) infinite, random 4s steps(1) infinite;
}

效果如下:

這樣是不是自然多了?

四、隨機大小的煙花

隨機位置有了,現在再加點大小變化,只需要在位置變化的基礎上加上 scale 就可以了。

@keyframes random {
25% {
transform: translate(200%, 50%) scale(0.8);
}
50% {
transform: translate(80%, 80%) scale(1.2);
}
75% {
transform: translate(20%, 60%) scale(0.65);
}
}

效果如下:

這樣一個隨機位置、隨機大小的煙花就完成了

五、多個煙花隨機綻放

單個煙花始終還是有些單調,現在多加幾個,由于現在單個煙花會出現 4 個不同的位置,所以并不需要太多的 HTML 結構,每個給一個不同的位置

<div class="fireworks" style="left: 15%; top: 5%;"></div>
<div class="fireworks" style="right: 30%; top: 13%;"></div>
<div class="fireworks" style="left: 5%; top: 23%;"></div>
<div class="fireworks" style="right: 45%; top: 8%;"></div>

效果如下:

4個一起出現,太整齊了,所以需要添加一些延時 animation-delay 錯開出現的時間

<div class="fireworks" style="left: 15%; top: 5%;"></div>
<div class="fireworks" style="right: 30%; top: 13%; animation-delay: -0.4s;"></div>
<div class="fireworks" style="left: 5%; top: 23%; animation-delay: -1.7s;"></div>
<div class="fireworks" style="right: 45%; top: 8%; animation-delay: -3.1s;"></div>

這樣就得到了文章開頭的效果了:

完整代碼可訪問 CSS fireworks (codepen.io)[3]

六、絢麗多彩的煙花

設計同學覺得白色有些太單調,想換個顏色,比如黃色?由于我們已經做成了序列幀圖片,不可能再生成一套黃色煙花的圖片,那么問題來了,如何通過 CSS 更換顏色呢?

這里就又不得不借助一下 CSS Mask[4] 了,關于 Mask 之前的文章介紹過很多實用的案例,這里就不多介紹了,如果還不熟悉 mask,可以參考這一篇 客棧說書:CSS遮罩CSS3 mask/masks詳細介紹 ? 張鑫旭-鑫空間-鑫生活 (zhangxinxu.com)[5]

只需要一點點改動就行了,把原先的背景用作遮罩背景,如下


.fireworks {
/*其他樣式*/
background: #FFEFAD;
-webkit-mask: url('https://imgservices-1252317822.image.myqcloud.com/image/081320210201435/e9951400.png') right top no-repeat;
-webkit-mask-size: auto 150px;
}
@keyframes fireworks {
to {
-webkit-mask-position: 100%;
}
}

效果如下:

再進一步,可以加入顏色的變化動畫,比如 黃 → 紅 → 紫 → 青,再定義一個關鍵幀。

}
.fireworks {
/*其他樣式*/
animation: fireworks 2s steps(24) infinite, random 8s steps(1) infinite, random_color 1s infinite;
}
@keyframes random_color {
0% {
background-color: #ffefad;
}
25% {
background-color: #ffadad;
}
50% {
background-color: #aeadff;
}
75% {
background-color: #adffd9;
}
}

可以得到如下的效果:

是不是變得絢麗多彩了起來?完整代碼可以訪問 CSS fireworks colors (codepen.io)[6]

七、IE下的降級處理

現代瀏覽器基本都支持 mask 遮罩了,但是 IE 不支持,所以 IE下就變成了這樣:

因此,IE 下需要降級處理,不用絢麗多彩,只需要隨機綻放

那么如何區分 IE 瀏覽器和現代瀏覽器呢?其實可以用 IE 不支持的一些選擇器就可以了,比如 :default

.fireworks {
background: url('https://imgservices-1252317822.image.myqcloud.com/image/081320210201435/e9951400.png') right top no-repeat;
background-size: auto 150px;
}
/*以下現代瀏覽器支持*/
_:default, .fireworks {
-webkit-mask: url('https://imgservices-1252317822.image.myqcloud.com/image/081320210201435/e9951400.png') right top no-repeat;
-webkit-mask-size: auto 150px;
}

八、動畫與用戶體驗

適當的動畫可以提升用戶體驗,但不是所有用戶都喜歡動畫,尤其是一些裝飾類動畫,可能覺得花里胡哨的,可能覺得分散了注意力,可能為了省電,甚至部分動畫還會對用戶造成不良的反應。為此,選擇權應該交給用戶,用戶覺得不需要可以在系統直接關閉動畫。

目前大部分的操作系統都可以關閉不必要的動畫

  •  在 Windows 10 中:設置 > 輕松獲取 > 顯示 > 在 Windows 中顯示動畫。
  •  在 Windows 7 中:控制面板 > 輕松獲取 > 使計算機更易于查看 > 關閉不必要動畫。
  •  在 MacOS 中:系統偏好 > 輔助使用 > 顯示 > 減弱動態效果。
  •  在 iOS 上:設置 > 通用 > 輔助性 > 減弱動態效果。
  •  在 Android 9+ 上:設置 > 輔助性 > 移除動畫。

相對應的,CSS 中可以通過媒體查詢 prefers-reduced-motion[7]來檢測系統是否開啟動畫減弱功能。

所以,可以再增加這樣一段 CSS:

@media screen and (prefers-reduced-motion) {  
/* 禁用不必要的動畫 */
.fireworks {
animation: none;
}
}

效果如下(這里以macOS為例):

可以看到,當勾選 "減弱動態效果" 時,煙花動效就完全消失了。雖然沒有什么技術含量,但是卻照顧到了一部分人的感受,不知不覺之間就提升了用戶體驗,何樂不為呢?

九、總結和說明

以上介紹了煙花動畫實現的全過程,可以看到,從簡單到復雜,動畫是一步一步組合疊加而成的,下面簡單總結一下

  •  選擇合適的動畫實現方式
  •  CSS 序列幀動畫實現的關鍵是 steps
  •  可以把多個動畫組合起來形成新的動畫
  •  改變圖形顏色可以用 mask 實現
  •  IE 和現代瀏覽器可以用 :default 區分
  •  有必要跟隨系統設置關閉動畫,可以借助媒體查詢 prefers-reduced-motion

CSS 實現并不復雜,大部分同學應該都能快速上手,但是做地完美其實并不容易,還有一些提升用戶體驗的小技巧。如果覺得還不錯,對你有幫助的話,歡迎點贊、收藏、轉發???

責任編輯:龐桂玉 來源: 前端大全
相關推薦

2011-06-07 16:03:48

匿名SQL Server

2009-07-06 19:29:37

云計算私有云服務器虛擬化

2017-11-29 11:14:52

離線緩存URL協議緩存

2018-03-07 15:24:41

PythonMySQL

2013-03-18 16:09:27

JavaEEOpenfire

2017-09-28 09:40:36

圖像分類準確率

2022-09-30 15:37:19

Web網站服務器

2012-03-22 10:33:33

思杰XenDesktop

2009-12-18 16:27:43

Cisco路由器配置

2015-07-30 09:35:24

滑動返回代碼

2019-11-04 10:06:19

MySQL索引

2010-07-12 17:10:23

Android應用程序

2017-08-24 08:31:41

2009-12-17 08:57:28

Windows 7磁盤分區

2024-07-22 11:43:28

LVMPnetLab網絡

2016-11-02 18:54:01

javascript

2021-11-12 11:28:01

Linux 內核驅動Linux 系統

2025-04-08 09:30:00

SeataDocker分布式系統

2020-02-26 08:00:02

14點遭遇真兇

2024-12-02 14:48:30

Docker鏡像文件
點贊
收藏

51CTO技術棧公眾號

先锋资源久久| 欧美日韩成人影院| 成人一区二区三区| 国产91精品久久久久久| 国产精品久久久久久久无码| 色综合亚洲图丝熟| 国产精品免费免费| 国产精品国产精品国产专区不卡| jizz国产在线观看| 91tv官网精品成人亚洲| 日韩av在线直播| 日韩欧美国产片| 福利写真视频网站在线| 91免费视频观看| 91亚洲精品一区| 五月天婷婷久久| 天天综合网网欲色| 精品视频一区在线视频| 久久精品一二三四| 欧美黑人粗大| 午夜久久福利影院| 国产精品亚洲天堂| 黄网在线观看| 风间由美性色一区二区三区 | 超碰在线资源| 国产精品欧美一级免费| 九九九九九九精品| 午夜精品久久久久久久99老熟妇 | 成人在线国产| 日韩精品视频免费| 日本一级大毛片a一| 欧美美女福利视频| 亚洲aⅴ怡春院| 久久久久久久久影视| 国产黄色免费在线观看| 99re成人精品视频| 国产 高清 精品 在线 a| 一区二区三区午夜| 日本视频中文字幕一区二区三区 | 成人精品动漫| 亚洲高清久久久| 日本xxxxx18| 理论片午午伦夜理片在线播放| 91一区二区三区在线观看| 动漫精品视频| 精品区在线观看| 国产综合色产在线精品| 国产精品大陆在线观看| 97免费在线观看视频| 亚洲一级黄色| 久久久久久国产精品久久| 一区二区在线观看免费视频| 五月天久久网站| 日韩视频免费在线观看| 99热6这里只有精品| 日本一本不卡| 亚洲最新av网址| 久久久久久久久福利| 国产探花一区| 正在播放欧美视频| 伊人影院综合网| 青青草国产免费一区二区下载| 国产亚洲欧美aaaa| 91视频免费看片| 亚洲澳门在线| 欧美多人乱p欧美4p久久| 久久久久成人精品无码| 国内视频精品| 2025国产精品视频| 91视频在线视频| 美女视频一区在线观看| 91精品视频在线免费观看| 99久久精品国产成人一区二区| 国产精品一区二区三区99| 91九色露脸| 日韩有码第一页| 久久五月婷婷丁香社区| 水蜜桃亚洲一二三四在线| 欧美激情黑人| 亚洲成人免费在线观看| 欧美 日韩 国产一区| 日本成人福利| 日韩色视频在线观看| 毛茸茸free性熟hd| 国产亚洲电影| 久久天堂av综合合色| 久久久综合久久| 老司机一区二区三区| 国产精品免费看久久久香蕉| 精品久久久久久亚洲综合网站 | 蜜乳av另类精品一区二区| 国产成人一区二区| 国产精品爽爽久久久久久| 成人动漫中文字幕| 色之综合天天综合色天天棕色| 国产高清一区二区三区视频| 精品成人国产在线观看男人呻吟| 黄色免费网址大全| 深夜福利一区| 亚洲一级免费视频| 九九热这里有精品视频| 日韩激情视频在线观看| 97超级碰碰| 久草在现在线| 洋洋成人永久网站入口| 欧美黑人又粗又大又爽免费| 天堂久久av| 亚洲最大中文字幕| 韩国av免费观看| 精品在线视频一区| 蜜桃导航-精品导航| 国产原创精品视频| 欧美日韩免费在线观看| 日韩欧美理论片| 精品国产一区二区三区香蕉沈先生 | 动漫精品一区二区| 亚洲欧美一区二区三区不卡| 国产欧美日韩免费观看 | 亚州一区二区三区| 亚洲成人av片在线观看| 国产探花在线视频| 日韩中文字幕一区二区三区| 国产日韩二区| 污污片在线免费视频| 欧美色倩网站大全免费| 亚洲av无码一区二区三区观看| 午夜电影亚洲| 成人免费看吃奶视频网站| 国产免费永久在线观看| 黄色精品在线看| 成人欧美精品一区二区| 欧美粗暴jizz性欧美20| 国产精品影片在线观看| 暖暖视频在线免费观看| 欧美日韩人人澡狠狠躁视频| 国产精品福利导航| 欧美人与禽猛交乱配视频| 成人欧美一区二区三区在线| 91在线品视觉盛宴免费| 欧美中文字幕久久| 三级网站在线免费观看| 亚洲免费播放| 国产在线欧美日韩| 麻豆福利在线观看| 欧美videofree性高清杂交| 欧美一区免费观看| 经典三级在线一区| 中文字幕精品—区二区日日骚| 国产精品天堂蜜av在线播放| 在线观看免费高清视频97| 草莓视频18免费观看| 久久色视频免费观看| 蜜臀av无码一区二区三区| 成人自拍在线| 午夜剧场成人观在线视频免费观看| 精品国产伦一区二区三区| 樱花影视一区二区| 亚洲最大视频网| 亚洲欧洲日本一区二区三区| 成人性色av| av电影免费在线看| 精品中文字幕久久久久久| 亚洲黄色激情视频| 久久精品人人做人人综合 | 欧美激情啪啪| 久精品免费视频| 内射无码专区久久亚洲| 欧美日韩国产激情| 欧美偷拍一区二区三区| 免费人成黄页网站在线一区二区| 在线看无码的免费网站| 麻豆一二三区精品蜜桃| 午夜精品理论片| 国内三级在线观看| 欧美精品一二三| 欧美黑人一级片| 99国产精品视频免费观看| 国产免费人做人爱午夜视频| 水蜜桃久久夜色精品一区| www.成人三级视频| 中国字幕a在线看韩国电影| 国产一区二区三区高清在线观看| 97国产成人无码精品久久久| 夜夜爽夜夜爽精品视频| 极品人妻一区二区三区| 另类的小说在线视频另类成人小视频在线 | 亚洲精品国产精| 一本一道波多野结衣一区二区| 国产主播av在线| 波波电影院一区二区三区| www日韩视频| 欧美激情成人在线| 欧美福利精品| 久久99成人| 日韩美女视频中文字幕| 麻豆网站在线观看| 亚洲精品乱码久久久久久按摩观| 午夜一级黄色片| 一区二区成人在线视频| 男人的天堂官网| 国产盗摄女厕一区二区三区| www日韩视频| 亚洲视频高清| 宅男av一区二区三区| 日韩美女精品| 99久久自偷自偷国产精品不卡| 欧美电影免费看| 午夜免费在线观看精品视频| 欧美三级电影一区二区三区| 亚洲精品久久久久中文字幕二区| 在线播放一级片| 欧美日韩亚洲视频| 欧美黄片一区二区三区| 国产精品成人免费在线| 波多野结衣办公室33分钟| 国产91精品入口| 日韩欧美国产片| 日本成人在线不卡视频| 欧美成人三级在线视频| 欧美va天堂| 中文字幕欧美人与畜| 国产欧美日韩一区二区三区四区 | 色狮一区二区三区四区视频| 精品国产中文字幕| 亚洲精品在线国产| 成人精品一区二区三区电影黑人 | 亚洲视频播放| 少妇一晚三次一区二区三区| 国产精品久久久久久麻豆一区软件| 欧美成人一区二区在线| 另类春色校园亚洲| 成人欧美一区二区三区在线观看| 国产精品成人**免费视频| 国产欧美日韩综合精品| 天天免费亚洲黑人免费| 热99久久精品| 亚洲美女尤物影院| 91精品国产91久久久| 毛片网站在线看| 久久久久久久久久久人体| 色女人在线视频| 久久99精品视频一区97| 在线黄色网页| 欧美成人在线影院| 18加网站在线| 欧美尺度大的性做爰视频| 成人免费视屏| 九九热这里只有精品免费看| 91精品久久| 久久人人爽人人| a国产在线视频| 欧美性做爰毛片| 亚洲黄色中文字幕| 热久久视久久精品18亚洲精品| 一区二区精品伦理...| 日本久久中文字幕| 欧美日韩成人影院| 国产欧美日韩精品丝袜高跟鞋| 精品国产黄a∨片高清在线| 国产精品日韩av| 99精品国产九九国产精品| 成人日韩在线电影| 欧美特黄不卡| 国产伦理一区二区三区| 亚洲三级网页| 婷婷精品国产一区二区三区日韩| 91视频一区| 国产高清不卡无码视频| 99伊人成综合| 亚洲黄色a v| 国产一区美女在线| 特级特黄刘亦菲aaa级| 99国产欧美另类久久久精品| 精品人妻中文无码av在线| 亚洲色图清纯唯美| 国产一级中文字幕| 日本韩国精品一区二区在线观看| 最好看的日本字幕mv视频大全 | 日产精品久久久久久久性色| 中文字幕日韩综合av| 在线免费观看污| 欧美中文在线观看国产| 91av一区| 国产精选在线观看91| 久久不见久久见免费视频7| 亚洲午夜精品一区二区| 国产精品mm| caoporn超碰97| 国产黄人亚洲片| 精品人伦一区二区| 亚洲激情av在线| 欧美性猛交xxxx乱大交hd| 欧美一区二区三区精品| 日本v片在线免费观看| 另类专区欧美制服同性| 漫画在线观看av| 91久久久久久久一区二区| 欧美网色网址| 性欧美18一19内谢| 日韩激情在线观看| 色哟哟网站在线观看| 欧美国产亚洲另类动漫| 日韩黄色精品视频| 69久久99精品久久久久婷婷| 人妻精品一区一区三区蜜桃91| 国产一区二区三区在线观看网站 | 色综合天天在线| 精品人妻伦一区二区三区久久| 亚洲深夜福利网站| 成人女同在线观看| 91九色蝌蚪国产| 国产九一精品| 国产v片免费观看| 国产精品一区二区在线观看网站 | 一区二区三区四区高清精品免费观看 | 91久久精品一区二区三| 亚洲黄色在线免费观看| 日韩中文字幕在线观看| 大胆人体一区二区| 国产女人水真多18毛片18精品 | 日韩欧美一区二区免费| 男生女生差差差的视频在线观看| 欧美国产日韩在线| 高清国产一区二区三区四区五区| 日韩精品极品视频在线观看免费| 在线成人国产| 久久黄色一级视频| 日韩一区中文字幕| 中文字幕免费播放| 亚洲欧美国产一区二区三区| 川上优av中文字幕一区二区| 91精品黄色| 欧美日韩一区二区国产| 涩多多在线观看| 亚洲欧美一区二区在线观看| 又色又爽又黄无遮挡的免费视频| 亚洲男女性事视频| 成人av观看| 欧美精品尤物在线| 久久久久国产精品一区二区| 无套内谢大学处破女www小说| 亚洲电影在线播放| 人成网站在线观看| 97免费中文视频在线观看| 国产厕拍一区| 久久99中文字幕| 99re亚洲国产精品| 国产精品21p| 国产亚洲精品va在线观看| 欧美黑人粗大| 亚洲国产精品www| 麻豆极品一区二区三区| 999精品久久久| 制服丝袜一区二区三区| 91麻豆一二三四在线| 成人xxxxx色| 国产一级一区二区| 欧美狂猛xxxxx乱大交3| 在线一区二区视频| 在线看黄色av| 91成人免费在线观看| 亚洲网站啪啪| 久久一区二区电影| 91久久国产最好的精华液| 国产黄在线播放| 91久久久国产精品| 亚洲视频观看| 人妻少妇无码精品视频区| 欧美色视频在线观看| а√天堂资源地址在线下载| 俄罗斯精品一区二区| 亚洲一区二区三区高清不卡| 神马久久久久久久久久久| 欧美精品成人一区二区三区四区| 日韩伦理av| 美女三级99| 精品无码三级在线观看视频 | 亚洲国产国产亚洲一二三| 极品粉嫩小仙女高潮喷水久久 | 97超碰蝌蚪网人人做人人爽| 国产精品探花在线观看| 最新免费av网址| 午夜影院在线观看欧美| 国产女人在线视频| 成人在线观看av| 可以看av的网站久久看| 欧美一区二区三区爽爽爽| 亚洲经典中文字幕| 久久91视频| 日韩欧美不卡在线| 国产亚洲自拍一区| www精品国产| 日韩免费精品视频| 一区二区影视| 精品无码国产污污污免费网站| 日韩亚洲欧美在线| 欧美极度另类| 丰满少妇大力进入| 国产精品久久看| 青青色在线视频|