首頁 web前端 css教學 關於css3的動畫效果animate的使用說明及瀏覽器相容的介紹

關於css3的動畫效果animate的使用說明及瀏覽器相容的介紹

Jun 22, 2018 pm 01:43 PM
animate css3動畫 瀏覽器相容

這篇文章主要介紹了關於css3的動畫效果animate的使用說明及瀏覽器兼容的介紹,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

昨天突然看到jing.fm(這個音樂網站非常不錯,很多效果我都很喜歡,如果你有興趣,可以去圍觀下)上音樂播放時,專輯的轉動效果很不錯,所以準備自己動手寫下,以備後用。結果第一次使用animate就遇到了坑爹的事情,特吐槽下

好久沒更新blog,上次發文(11月8日)到現在剛好一個月,期間項目上的東西比較多,一時覺得時間比較緊,沒來得及更新。這個星期總算是告一段落,補上幾篇技術性的文章。好吧,第一篇是關於css3動畫的使用。
昨天突然看到jing.fm(這個音樂網站非常不錯,很多效果我都很喜歡,如果你有興趣,可以去圍觀下)上音樂播放時,專輯的轉動效果很不錯,所以準備自己動手寫下,以備後用。結果第一次使用animate就遇到了坑爹的事情,特吐槽下。
一、最終的效果

如上圖所示,最終是想讓這張專輯的圖片轉動起來,模擬出唱片播放的效果(你可以去jing .fm上看看真實的效果,很贊,現在很多音樂網站都添加了這個效果)。
二、結構程式碼

<!DOCTYPE html> 
<html> 
<head> 
<meta charset=&#39;utf-8&#39;> 
<title>音乐专辑播放模拟</title> 
<link rel="stylesheet" type="text/css" href="css/style.css"> 
</head> 
<body> 
<p id="bd"> 
<p id="musicBox"> 
<p class="cover rotateCD"></p> 
<p class="mask"></p> 
</p> 
</p> 
</body> 
</html>
登入後複製

從上面的程式碼可以看出,由於是使用css3強大的動畫效果,所以我的結構定義的非常簡單(在符合語意的前提下),同時沒有引用到javascript腳本檔。
musicBox來限定外圍框的大小,內部的cover用來顯示專輯封面圖片,這張圖片是下圖左邊圖片這樣的,四四方方,不是圓形,所以我在後面做了個mask的p ,它不做其他事情,只是用來容納一個遮罩(下圖右邊圖片),蓋住圖片圓形之外的部分。
    
三、css3樣式表 

@charset utf-8; 
/* common: rotateCD */ 
@-webkit-keyframes myrotate{ 
0%{ 
-webkit-transform : rotate(0deg); 
} 
100%{ 
-webkit-transform : rotate(360deg); 
} 
} 
@-moz-keyframes myrotate{ 
0%{ 
-moz-transform : rotate(0deg); 
} 
100%{ 
-moz-transform : rotate(360deg); 
} 
} 
@-ms-keyframes myrotate{ 
0%{ 
-ms-transform : rotate(0deg); 
} 
100%{ 
-ms-transform : rotate(360deg); 
} 
} 
@-o-keyframes myrotate{ 
0%{ 
-o-transform : rotate(0deg); 
} 
100%{ 
-o-transform : rotate(360deg); 
} 
} 
@keyframes myrotate{ 
0%{ 
transform : rotate(0deg); 
} 
100%{ 
transform : rotate(360deg); 
} 
} 
.rotateCD{ 
-webkit-animation: myrotate 9.5s infinite linear; 
-moz-animation: myrotate 9.5s infinite linear; 
-ms-animation: myrotate 9.5s infinite linear; 
-o-animation: myrotate 9.5s infinite linear; 
animation: myrotate 9.5s infinite linear; 
-webkit-animation-play-state: running; 
-moz-animation-play-state: running; 
-ms-animation-play-state: running; 
-o-animation-play-state: running; 
animation-play-state: running; 
} 
/* module: bd */ 
#bd{width: 960px;margin: 200px auto 0;} 
/* module: musicBox */ 
#musicBox{position: relative;width: 430px;height: 430px;margin: 0 auto;overflow: hidden;} 
#musicBox .cover{width: 300px;height: 300px;margin: 65px;background: url(../img/music1.jpg) 0 0 no-repeat;} 
#musicBox .mask{position: absolute;top: 0;left: 0;width: 100%;height: 100%;background: url(../img/playerMask.png) 0 0 no-repeat;}
登入後複製

rotateCD這部分的程式碼相容了多種高階瀏覽器(當然支援css3的),設定了動畫執行的時間和其他一些設置,你可以查詢animate的更多知識來深入了解。
對於上面的關於動畫關鍵影格keyframes的寫法,踩了比較多的坑,一開始,我是看《HTML5與CSS3權威指南》上的例子,它只寫了chrome下的寫法(比較坑爹,我猜估計是作者認為其他瀏覽器的寫法與此類似,所以讓讀者自己去摸索),我想當然的把其他瀏覽器的兼容性rotate設定寫成了,如下面的程式碼所示:

@-webkit-keyframes myrotate{ 
0%{ 
-webkit-transform : rotate(0deg); 
-moz-transform : rotate(0deg); 
-ms-transform : rotate(0deg); 
-o-transform : rotate(0deg); 
transform : rotate(0deg); 
} 
....
登入後複製

這樣導致的結果就是,chrome和safari下動畫正常,FF、opera和IE下均無動畫。其實這部分很好理解,myrotate的關鍵影格只是對webkit做了特殊說明,其他瀏覽器根本對此置之不理,所以沒有動畫的效果。
因此,我們在寫關鍵影格適配樣式的時候,一定要寫成下面的形式:

@-webkit-keyframes myrotate{ 
0%{ 
-webkit-transform : rotate(0deg); 
} 
... 
@-moz-keyframes myrotate{ 
0%{ 
-moz-transform : rotate(0deg); 
} 
... 
@-ms-keyframes myrotate{ 
0%{ 
-ms-transform : rotate(0deg); 
} 
... 
@-o-keyframes myrotate{ 
0%{ 
-o-transform : rotate(0deg); 
} 
... 
@keyframes myrotate{ 
0%{ 
transform : rotate(0deg); 
} 
...
登入後複製

opera瀏覽器還有個比較怪異的地方,它偏愛@keyframes myrotate{ ...},而對@-o-keyframes myrotate{...}不感冒,所以你發現兩者只存其一的時候,前者可以實現動畫,而後者不能實現動畫效果。我一直對此很是不解,後來找到關於opera的介紹,說它是嚴格的執行W3C網頁標準。這樣想想,就明白了為什麼它如此偏愛@keyframes myrotate{...}了。
四、總結
css3看起來非常美好,但是實際使用中還是存在不少的不確定性。如果你不能看到已經實現的程式碼模板,你很難確信自己的程式碼格式就一定正確。所以你可以到一些不錯的網站來觀察各種動畫效果,選擇自己喜歡的動畫並產生程式碼,下載下來後再依照自己的需求來寫動畫程式碼。這樣會讓你的動畫效果實現起來事半功倍(不要擔心它達不到你的要求,上面有很多的效果,你可以自己組合,只要你的想像力夠豐富)。
好吧,本文到此結束。
PS:文中使用的瀏覽器為chrome(21.0.1180.15)、safari5.1.7(7534.57.2)、opera(12.11)、FF(17.0.1)和IE10(10.0. 9200.16438)。

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關推薦:

CSS中使用Flexbox來達到居中效果的方法實作

#

如何使用css3實作input輸入框顏色漸變發光的效果

#

以上是關於css3的動畫效果animate的使用說明及瀏覽器相容的介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

使用GraphQL緩存 使用GraphQL緩存 Mar 19, 2025 am 09:36 AM

如果您最近開始使用GraphQL或審查了其優點和缺點,那麼您毫無疑問聽到了諸如“ GraphQl不支持緩存”或

使用Redwood.js和Fauna構建以太坊應用 使用Redwood.js和Fauna構建以太坊應用 Mar 28, 2025 am 09:18 AM

隨著最近比特幣價格超過20k美元的攀升,最近打破了3萬美元,我認為值得深入研究創建以太坊

用高架創建自己的野蠻人 用高架創建自己的野蠻人 Mar 18, 2025 am 11:23 AM

無論您是開發人員的哪個階段,我們完成的任務(無論大小)都會對我們的個人和專業成長產生巨大影響。

VUE 3 VUE 3 Apr 02, 2025 pm 06:32 PM

它的出局!恭喜Vue團隊完成了完成,我知道這是一項巨大的努力,而且很長時間。所有新文檔也是如此。

您可以從瀏覽器獲得有效的CSS屬性值嗎? 您可以從瀏覽器獲得有效的CSS屬性值嗎? Apr 02, 2025 pm 06:17 PM

我有人寫了這個非常合法的問題。 Lea只是在博客上介紹瞭如何從瀏覽器中獲得有效的CSS屬性。那樣的是這樣。

在CI/CD上有點 在CI/CD上有點 Apr 02, 2025 pm 06:21 PM

我說的“網站”比“移動應用程序”更合適,但我喜歡Max Lynch的框架:

比較瀏覽器的響應式設計 比較瀏覽器的響應式設計 Apr 02, 2025 pm 06:25 PM

這些桌面應用程序中有許多目標是同時在不同的維度上顯示您的網站。因此,例如,您可以寫作

帶有粘性定位的堆疊卡和一點點的雜物 帶有粘性定位的堆疊卡和一點點的雜物 Apr 03, 2025 am 10:30 AM

前幾天,我發現了科里·金尼文(Corey Ginnivan)網站上的這一點,當您滾動時,彼此之間的卡片堆放集。

See all articles