首頁 web前端 css教學 如何用純CSS方式實現CSS動畫的暫停與播放效果? animation-play-state屬性介紹(詳解)

如何用純CSS方式實現CSS動畫的暫停與播放效果? animation-play-state屬性介紹(詳解)

Sep 15, 2018 pm 03:44 PM
animation css3

使用純 CSS 的方法,暫停或播放 CSS 動畫。是不是看起來應該是不可能的實現的;或者就算可以實現,也是一個很麻煩的實現方法,需要用大量的css樣式才可以實現。其實不然,在 CSS3 animation 中,就有這樣一個屬性可以做到暫停、播放動畫。本章就跟大家介紹如何用純CSS方式實現CSS動畫的暫停與播放效果? animation-play-state屬性介紹(詳解)。有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

animation-play-state屬性

 animation-play-state: paused | running;
登入後複製

animation-play-state: 屬性定義一個動畫是否運作或暫停。可以透過查詢它來確定動畫是否正在運行。另外,它的值可以被設定為暫停和恢復的動畫的重播。

如果借助Javascript,我們可以實現控制CSS 動畫的運行和播放,以下列出部分關鍵程式碼:

html程式碼:

<div class="btn">stop</div> 
<div class="animation"></div>
登入後複製

css程式碼:

.animation {
    width: 100px;
    height: 100px;
    margin: 50px auto;
    background: deeppink;
    animation: move 2s linear infinite alternate;
}

@keyframes move {
    0% {
        transform: translate(-100px, 0);
    }
    100% {
        transform: translate(100px, 0);
    }
}

.btn {
    width: 50px;
    margin: 10px auto;
    text-align: center;
    border:1px solid #ddd;
    padding: 10px;
    border-radius: 5px;
    cursor:pointer;
    
    &:hover {
        background: #ddd;
        color: #333;
    }
    
    &:active {
        background: #aaa;
    }
}
登入後複製

js程式碼:

document.querySelector(&#39;.btn&#39;).addEventListener(&#39;click&#39;, function() {
    let btn = document.querySelector(&#39;.btn&#39;);
    let elem = document.querySelector(&#39;.animation&#39;);
    let state = elem.style[&#39;animationPlayState&#39;];
    
    if(state === &#39;paused&#39;) {
        elem.style[&#39;animationPlayState&#39;] = &#39;running&#39;;
        btn.innerText = &#39;stop&#39;;
    } else {
        elem.style[&#39;animationPlayState&#39;] = &#39;paused&#39;;
        btn.innerText = &#39;play&#39;;
    }
    
});
登入後複製

效果圖(播放時與停止播放後):

如何用純CSS方式實現CSS動畫的暫停與播放效果? animation-play-state屬性介紹(詳解)如何用純CSS方式實現CSS動畫的暫停與播放效果? animation-play-state屬性介紹(詳解)

純CSS 實作

在下面我們探討下,使用純CSS 的方式能否實現。

hover 偽類實作

使用 hover 偽類,在滑鼠停留在按鈕上面時,控制動畫樣式的暫停。

關鍵程式碼如下:

html程式碼:

<div class="btn stop">stop</div> 
<div class="animation"></div>
登入後複製

css程式碼:

.animation {
    width: 100px;
    height: 100px;
    margin: 50px auto;
    background: deeppink;
    animation: move 2s linear infinite alternate;
}

input {
    display: none;
}

@keyframes move {
    0% {
        transform: translate(-100px, 0);
    }
    100% {
        transform: translate(100px, 0);
    }
}

.btn {
    width: 50px;
    margin: 10px auto;
    text-align: center;
    border:1px solid #ddd;
    padding: 10px;
    border-radius: 5px;
    cursor:pointer;
    
    &:hover {
        background: #ddd;
        color: #333;
    }
    
    &:active {
        background: #aaa;
    }
}

.stop:hover ~ .animation {
    animation-play-state: paused;
}
登入後複製

效果圖:

如何用純CSS方式實現CSS動畫的暫停與播放效果? animation-play-state屬性介紹(詳解)如何用純CSS方式實現CSS動畫的暫停與播放效果? animation-play-state屬性介紹(詳解)

##當然,這個方法不夠智能,如果放開滑鼠的自由,點擊一下暫停、再點擊一下播放就好了。還有其他方法嗎?

checked 偽類實作

之前的文章《有趣的CSS 題目(8):純CSS的導覽列Tab切換方案》也談過,使用radio 標籤的checked 偽類,加上實現純CSS 捕獲點擊事情。

並且利用被點擊的元素可以控制一些 CSS 樣式。實作如下:

html程式碼:


<input id="stop" type="radio" name="playAnimation"/>
<input id="play" type="radio" name="playAnimation"/>

<div class="box">
    <label for="stop">
        <div class="btn">stop</div>
    </label>
    <label for="play">
        <div class="btn">play</div>
    </label>
</div>

<div class="animation"></div>
登入後複製

css程式碼:


.animation {
    width: 100px;
    height: 100px;
    margin: 50px auto;
    background: deeppink;
    animation: move 2s linear infinite alternate;
}

input {
    display: none;
}

@keyframes move {
    0% {
        transform: translate(-100px, 0);
    }
    100% {
        transform: translate(100px, 0);
    }
}

.btn {
    width: 50px;
    margin: 10px auto;
    text-align: center;
    border:1px solid #ddd;
    padding: 10px;
    border-radius: 5px;
    cursor:pointer;
    
    &:hover {
        background: #ddd;
        color: #333;
    }
    
    &:active {
        background: #aaa;
    }
}

#stop:checked ~ .animation {
    animation-play-state: paused;
}

#play:checked ~ .animation {
    animation-play-state: running;
}
登入後複製
我們希望當#stop 和#play 兩個radio 被點擊時,給.animation 元素分別賦予animation-play-state: paused 或是animation-play-state: running 。而二者只能生效其一,所以需要給予兩個 radio 標籤相同的 name 屬性。

效果圖:

如何用純CSS方式實現CSS動畫的暫停與播放效果? animation-play-state屬性介紹(詳解)如何用純CSS方式實現CSS動畫的暫停與播放效果? animation-play-state屬性介紹(詳解)

在上面的範例中,實作了純 CSS 方式實作 CSS 動畫的暫停與播放。

當然,還有一些其他方法,例如 radio 替換成 checkbox ,或者使用 :target 偽類選擇器也能實現上面同樣的效果,感興趣的可以嘗試一下。

以上是如何用純CSS方式實現CSS動畫的暫停與播放效果? animation-play-state屬性介紹(詳解)的詳細內容。更多資訊請關注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

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 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)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
純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實現各種奇形怪狀按鈕(附代碼) Jul 19, 2022 am 11:28 AM

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

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

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

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也能實現文字輪播與圖片輪播! 原來利用純CSS也能實現文字輪播與圖片輪播! Jun 10, 2022 pm 01:00 PM

怎麼製作文字輪播與圖片輪播?大家第一想到的是利用js,其實利用純CSS也能實現文字輪播與圖片輪播,下面來看看實作方法,希望對大家有幫助!

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

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

See all articles