目錄
#動畫
keyframes
下面我要講的兩個屬性都不是animation的子屬性
animation-play-state
首頁 web前端 css教學 CSS3動畫animation相關屬性與關鍵影格規則keyframes的詳細介紹

CSS3動畫animation相關屬性與關鍵影格規則keyframes的詳細介紹

May 21, 2017 pm 04:06 PM

我昨天寫三維正方體的時候,就用到了動畫的語法 

今天就來系統複習一下
過渡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

#animation是一個複合屬性,有以下子屬性

  • animation-name 指定keyframes動畫的名稱

  • animation-duration 指定動畫執行時間

  • animation-timing-function #指定動畫的速度曲線,預設「ease」緩動

  • animation-delay 指定動畫延遲時間,預設「0」無延遲

  • animation-iteration-count 指定動畫播放的次數,預設「1」執行1次

  • #animation-direction#規定動畫執行方向,預設「normal」

這個複合屬性比我們的transition要複雜一些

前四個屬性就不多解釋了,類似於我們的transition
忘了的同學,戳這裡->傳送門

animation-iteration-count動畫播放次數我們除了填寫數字之外

還可以使用一個常用的關鍵字infinite無限
循環

animation-direction除了normal以外還有以下屬性值

  • #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以外還有以下屬性值

  • forwards  動畫完成後,保持最後一個屬性(定義在最後一格)

  • 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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡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脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

純CSS3怎麼實現波浪效果? (程式碼範例) 純CSS3怎麼實現波浪效果? (程式碼範例) Jun 28, 2022 pm 01:39 PM

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

如何加速Windows 11中的動畫效果:2種方法解析 如何加速Windows 11中的動畫效果:2種方法解析 Apr 24, 2023 pm 04:55 PM

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

如何使用CSS實現元素的旋轉背景圖動畫效果 如何使用CSS實現元素的旋轉背景圖動畫效果 Nov 21, 2023 am 09:05 AM

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

巧用CSS實現各種奇形怪狀按鈕(附代碼) 巧用CSS實現各種奇形怪狀按鈕(附代碼) Jul 19, 2022 am 11:28 AM

這篇文章帶大家看看怎麼使用 CSS 輕鬆實現高頻出現的各類奇形怪狀按鈕,希望對大家有幫助!

css怎麼隱藏元素但不佔空間 css怎麼隱藏元素但不佔空間 Jun 01, 2022 pm 07:15 PM

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

css3怎麼實現花邊邊框 css3怎麼實現花邊邊框 Sep 16, 2022 pm 07:11 PM

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

css中keyframes是什麼意思 css中keyframes是什麼意思 Feb 25, 2021 am 10:51 AM

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

css3如何實現滑鼠點擊圖片放大 css3如何實現滑鼠點擊圖片放大 Apr 25, 2022 pm 04:52 PM

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

See all articles