CSS3動畫animation相關屬性與關鍵影格規則keyframes的詳細介紹
我昨天寫三維正方體的時候,就用到了動畫的語法
今天就來系統複習一下
過渡transition有著它的限制
雖然簡單,但是它只能在兩個狀態之間改變
並且它需要事件的驅動才能夠進行
不能夠自己運動
所以為了解決這樣的問題
我們需要animation動畫
#動畫
#若想實現動畫效果
僅僅有animation屬性是不夠的
我們還需要@keyframes規則
先來看一個例子
p class="demo"></p>
.demo { width: 100px; height: 100px; background-color: gold;}.demo:hover { animation: change 2s linear;}@keyframes change { 0% { background-color: red; } 50% { background-color: purple; } 100% { background-color: lime; }}
當滑鼠懸浮時,元素先變紅然後過渡到紫色有過渡到綠色
我們先來看看@keyframes 規則
keyframes
在@keyframes中,我們定義動畫關鍵影格
然後animation會按照keyframes關鍵影格裡我們指定的幀狀態進行過渡執行
0% - 100% 就代表動畫的時間過渡
規則中的0%和100%,
可以替換成from和to關鍵字
@keyframes xxx { from { ...... } to { ...... } }
如果我們省略了起始幀,瀏覽器會按照它最初的樣式進行過渡
@keyframes change { 100% { background-color: lime; }}
##除此之外,我們還可以把相同的幀寫在一起像這樣
@keyframes change { from,to { background-color: red; } 50% { background-color: blue; }}
animation-name 指定keyframes動畫的名稱
animation-duration 指定動畫執行時間
animation-timing-function #指定動畫的速度曲線,預設「ease」緩動
-
animation-delay 指定動畫延遲時間,預設「0」無延遲
前四個屬性就不多解釋了,類似於我們的transition
忘了的同學,戳這裡->傳送門
#reverse 反向播放動畫
alternate 輪流播放動畫
#alternate-reverse 反向輪流播放動畫
.demo { width: 100px; height: 100px; background-color: gold;}.demo:hover { animation: change 1s 2 linear;}@keyframes change { to { width: 200px; }}
normal: 兩次測試動畫:
100px -> 200px
100px -> 200px
.demo:hover { animation: change 1s 2 linear reverse; /*改*/}
reverse:# 兩次測試動畫:
200px -> ; 100px
200px -> 100px
.demo:hover { animation: change 1s 2 linear alternate; /*改*/}
alternate:
## 兩次測試動畫: 100px -> 200px
200px -> 100px
.demo:hover { animation: change 1s 2 linear alternate-reverse; /*改*/}
#alternate-reverse
:
兩次測試動畫: 200px -> 100px
100px -> 200px
animation-fill-mode
下面我要講的兩個屬性都不是animation的子屬性
所以不能寫在animation中
animation-fill-mode規定
動畫時間之外的狀態,預設「none」 除了none以外還有以下屬性值
backwards
在animation-delay指定时间内、动画显示之前,应用起始属性(定义在第一帧)both
应用forwards和backwards两种模式
forwards
这个属性还是蛮有用的
还是我们上面的例子
.demo:hover { animation: change 1s linear; /*改*/ animation-fill-mode: forwards; /*改*/}
我们发现1s之后,元素并没有回到最初的100px,而是保持了我们最后一帧的200px状态
backwards
理解这个属性,我们需要先加一个延时
.demo:hover { animation: change 1s linear 1s; /*改*/ /*animation-fill-mode: backwards;*/ /*待增*/}@keyframes change { from { /*增*/ width: 150px; } to { width: 200px; }}
我就不配图了
我们发现鼠标悬浮后,1s后瞬间变为150px,然后再过渡到200px
hover-0s -> 1s -> 2s
100px ->瞬变150px –> 过渡到200px
现在增加backwards
.demo:hover { animation: change 1s linear 1s; /*改*/ animation-fill-mode: backwards; /*增*/}
这回我们发现鼠标悬浮的一瞬间就变为15px,然后1s后过渡到200px
hover-0s -> 1s -> 2s
瞬变150px ->150px –> 过渡到200px
这就是backwards的作用,延迟前就应用第一帧动画的样式,然后准备过渡
animation-play-state
animation-play-state 指定动画的运行或暂停。默认 “running”
除了running还有paused
利用这个属性再配合js我们可以控制动画的暂停和运行
demo.style.animationPlayState = "paused";
今天的动画就先写这么多,感觉写了很长时间
日后再总结动画相关的性能问题
以上是CSS3動畫animation相關屬性與關鍵影格規則keyframes的詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

純CSS3怎麼實現波浪效果?這篇文章就來跟大家介紹一下使用 SVG 和 CSS 動畫來製作波浪效果的方法,希望對大家有幫助!

當微軟推出Windows11時,它帶來了許多變化。其中一項變更是增加了使用者介面動畫的數量。有些使用者想要改變事物的出現方式,他們必須想辦法去做。擁有動畫讓使用者感覺更好、更友善。動畫使用視覺效果使電腦看起來更具吸引力和響應能力。其中一些包括幾秒鐘或幾分鐘後的滑動菜單。電腦上有許多動畫會影響PC效能、減慢速度並影響您的工作。在這種情況下,您必須關閉動畫。本文將介紹使用者可以提高在PC上的動畫速度的幾種方法。您可以使用登錄編輯程式或您執行的自訂檔案來套用變更。如何提高Windows11動畫的

如何使用CSS實現元素的旋轉背景圖動畫效果背景圖動畫效果可以增加網頁的視覺吸引力和使用者體驗。本文將介紹如何使用CSS實現元素的旋轉背景圖動畫效果,並提供具體的程式碼範例。首先,我們需要準備一張背景圖,可以是任何你喜歡的圖片,例如一張太陽或電風扇的圖片。將該圖片儲存並命名為“bg.png”。接下來,建立一個HTML文件,並在文件中新增一個div元素,將其設定為

兩種方法:1、利用display屬性,只要為元素加上「display:none;」樣式即可。 2.利用position和top屬性設定元素絕對定位來隱藏元素,只需為元素加上「position:absolute;top:-9999px;」樣式。

在css中,可以利用border-image屬性來實作花邊邊框。 border-image屬性可以使用圖片來建立邊框,即給邊框加上背景圖片,只需要將背景圖片指定為花邊樣式即可;語法「border-image: url(圖片路徑) 向內偏移值圖像邊界寬度outset 是否重複;」。

在css中,keyframes的意思為“關鍵幀”,是一種創建動畫的css規則,它可以定義一個CSS動畫的一個週期的行為;可通過沿動畫序列建立關鍵幀來指定動畫序列循環期間的中間步驟,語法「@keyframes animation-name {keyframes-selector {css-styles;}}」。

實作方法:1、使用「:active」選擇器選取滑鼠點擊圖片的狀態;2、使用transform屬性和scale()函數實現圖片放大效果,語法「img:active {transform: scale(x軸放大倍率,y軸放大倍率);}」。
