css3如何解決動畫的播放、暫停和重新開始

来源:https://www.cnblogs.com/pythonywy/archive/2019/09/21/11563382.html
-Advertisement-
Play Games

0921自我總結 css3如何解決動畫的播放、暫停和重新開始 一.解決的本質思路 播放的解決思路 先定義好動畫效果通過類名的增加達到樣式的出現 暫停的解決思路 我們播放動畫時,如要暫停動畫,就要用到 這個屬性。 屬性有兩個值: 當然去掉 ,也可以繼續播放動畫。 重新開始解決思路 播放與重新開始的解決 ...


0921自我總結

css3如何解決動畫的播放、暫停和重新開始

一.解決的本質思路

播放的解決思路

先定義好動畫效果通過類名的增加達到樣式的出現

暫停的解決思路

我們播放動畫時,如要暫停動畫,就要用到animation-play-state這個屬性。animation-play-state屬性有兩個值:

paused: 暫停動畫;
running: 繼續播放動畫;

當然去掉animation-play-state,也可以繼續播放動畫。

重新開始解決思路

播放與重新開始的解決辦法

對於元素取多個類名,通過類名的刪除,替換

註意點:這裡不能刪除和添加類名為同一個,而且動畫要同一效果,不同動畫名稱.不然動畫效果無法重置

二.演示代碼

<div id="box" class="box"></div>
  <p id="text"></p>
  <div class="control">
    <button id="play" value="播放">播放</button>
    <button id="pause" value="暫停">暫停</button>
    <button id="restart" value="重新開始">重新開始</button>
  </div>


<style>
    @keyframes mymove {
    0% {
      margin-left: 0px;
    }
    50% {
      margin-left: 400px;
    }
    100% {
      margin-left: 0px;
    }
  }
  @keyframes mymove1 {
    0% {
      margin-left: 0px;
    }
    50% {
      margin-left: 400px;
    }
    100% {
      margin-left: 0px;
    }
  }
  .box {
    margin: 50px 0;
    width: 100px;
    height: 100px;
    background-color: #5578a2;
  }
  .play {
    animation: mymove 5s infinite ease;
  }
  .restart {
    animation: mymove1 5s infinite ease;
  }
  .pause {
    animation-play-state: paused;
  }
</style>


<script>
var play = document.getElementById('play'),
    pause = document.getElementById('pause'),
    restart = document.getElementById('restart'),
    text = document.getElementById('text'),
    box = document.getElementById('box');
  pause.addEventListener('click', function() {
    if (box.classList.contains('play')) {
      box.className = 'pause play box';
    } else {
      box.className = 'pause restart box';
    }
    text.innerHTML = this.value;
  });
  play.addEventListener('click', function() {
    if (box.classList.contains('play')) {
      box.className = 'play box';
    } else {
      box.className = 'restart box';
    }
    text.innerHTML = this.value;
  });
  restart.addEventListener('click', function() {
    if (box.classList.contains('play')) {
      box.className = 'restart box';
    } else {
      box.className = 'play box';
    }
    text.innerHTML = this.value;
  });
</script>

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • VUE從入門到放棄(第一天)——整體流程 先想想一個項目,vue項目是從什麼到什麼,然後再什麼的?那是什麼呢? 1. 搭建 ( vue cli) 2. 代碼內容 3. 運行 4. 封裝 5. 成品 一.搭建(腳手架vue cli) 首先node.js,npm,vue cli(腳手架)一定要有,這裡不 ...
  • 傻瓜式操作搭建個人網站 1.首先買功能變數名稱和雲伺服器 買東西一般都很方便的給錢就行。。。 百度,騰訊,阿裡都可以買,而且只要給錢,啥東西都給的明明白白。 這裡我就不細說了。個人推薦百度的。因為我就是用這個的。 2.後面來說下錢解決不了得事,配置雲伺服器,(買的功能變數名稱先放著不動它) 找到自己買的實例,打開V ...
  • # Vue指令大集合(無slot) #### 包含內容: 1. v-cloak2. v-html3. v-text4. v-bind5. v-show6. v-model7. v-for8. v-if v-else-if v-else9. v-pre 代碼如下:(可以自己複製去看一下) html 展 ...
  • .attr( ) 可以設置元素的屬性(也就是給元素新增加一個原來並不存在的屬性)也可以獲取元素的本來就有的屬性以及額外設置的屬性。如果要獲取的屬性沒有設置,那麼獲取到的結果是 undefined; .prop( )可以設置元素的屬性(HTML固有的屬性,可以給元素添加屬性)也可以獲取元素的固有的屬性 ...
  • 學習前端以來,一直很好奇像京東,淘寶這種大型網站的購物車是怎麼做到統一的,就去搜索了一些資料吧!大致的看了一下,自己實戰了下,俗話說的好,讀萬卷書不如行萬里路!購物車只是一個很小的案例,但也可以去動手做一做,感受下過程!積少成多! 這案例主要是通過本地儲存來實現的,我用了兩種方法,一種是cookie ...
  • jQuery -動畫 jQuery動畫分為三個部分,非自定義動畫,自定義動畫,和全局動畫設置。 一、非自定義動畫: 1.顯示、隱藏: show( ) 、hide( )、toggle() 兩種用法:1)不傳參數,代表直接顯示隱藏。 2) 向方法中傳遞一個參數,這個參數為number類型,代表動畫的執行 ...
  • 今天給大家分享一下js中常用的基礎演算法,廢話不多說,直接上代碼; 1、兩個數字調換順序 2、對象排序,安裝對象中的id排序對象的位置; 3、冒泡排序 4、隨機出現不同的數字 5、字元串大小寫互換 6、數組隨機打亂 7、數組扁平化-把多維數組轉為一維數組 8、數組去重 9、數組尾部刪除,增加到前面; ...
  • 0921自我總結 CSS3動畫的使用 一.動畫的創建 @keyframes規則是創建動畫 瀏覽器相容 根據狀態的百分比來設置 上面如果有首碼下麵使用的時候必須加上首碼 二.css3動畫的屬性 animation設置動畫 :animation: name duration timing functio ...
一周排行
    -Advertisement-
    Play Games
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...
  • 1. JUnit 最佳實踐指南 原文: https://howtodoinjava.com/best-practices/unit-testing-best-practices-junit-reference-guide/ 我假設您瞭解 JUnit 的基礎知識。 如果您沒有基礎知識,請首先閱讀(已針 ...