成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

純CSS方式實現CSS動畫的暫停與播放!

開發 前端
使用純 CSS 的方法,能否暫停、播放 CSS 動畫?看起來不可能,至少很麻煩。本文介紹代碼來實現了純 CSS 方式實現 CSS 動畫的暫停與播放。

純 CSS 方式實現 CSS 動畫的暫停與播放!

使用純 CSS 的方法,能否暫停、播放 CSS 動畫?看起來不可能,至少很麻煩。

我們知道,在 CSS3 animation 中,有這樣一個屬性可以暫停、播放動畫:

  1.  
  2.     animation-play-state: paused | running; 
  3.  

 

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

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

  1. <div class="btn">stop</div> 
  2.  
  3. <div class="animation"></div> 
  4.  
  5. <style> 
  6.  
  7. .animation { 
  8.  
  9.     animation: move 2s linear infinite alternate; 
  10.  
  11.  
  12. @keyframes move { 
  13.  
  14.     0% { 
  15.  
  16.         transform: translate(-100px, 0); 
  17.  
  18.     } 
  19.  
  20.     100% { 
  21.  
  22.         transform: translate(100px, 0); 
  23.  
  24.     } 
  25.  
  26.  
  27. </style> 

 

 

  1. document.querySelector('.btn').addEventListener('click'function() { 
  2.  
  3.     let btn = document.querySelector('.btn'); 
  4.  
  5.     let elem = document.querySelector('.animation'); 
  6.  
  7.     let state = elem.style['animationPlayState']; 
  8.  
  9.      
  10.  
  11.     if(state === 'paused') { 
  12.  
  13.         elem.style['animationPlayState'] = 'running'
  14.  
  15.         btn.innerText = 'stop'
  16.  
  17.     } else { 
  18.  
  19.         elem.style['animationPlayState'] = 'paused'
  20.  
  21.         btn.innerText = 'play'
  22.  
  23.     } 
  24.  
  25.      
  26.  
  27. }); 

 

Demo — pause CSS Animation(https://codepen.io/Chokcoco/pen/GWYBdM)

純 CSS 實現

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

hover 偽類實現

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

關鍵代碼如下:

  1. <div class="btn stop">stop</div> 
  2.  
  3. <div class="animation"></div> 
  4.  
  5. <style> 
  6.  
  7. .stop:hover ~ .animation { 
  8.  
  9.     animation-play-state: paused; 
  10.  
  11.  
  12. </style> 

 

Demo — 純 CSS 方式實現 CSS 動畫的暫停與播放 (Hover):(https://codepen.io/Chokcoco/pen/PpxKBX)

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

checked 偽類實現

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

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

  1. <input id="stop" type="radio" name="playAnimation" /> 
  2.  
  3. <input id="play" type="radio" name="playAnimation" /> 
  4.  
  5. <div class="box"
  6.  
  7.     <label for="stop"
  8.  
  9.         <div class="btn">stop</div> 
  10.  
  11.     </label> 
  12.  
  13.     <label for="play"
  14.  
  15.         <div class="btn">play</div> 
  16.  
  17.     </label> 
  18.  
  19. </div> 
  20.  
  21. <div class="animation"></div> 

 

部分關鍵 CSS 代碼:

  1. .animation { 
  2.  
  3.     animation: move 2s linear infinite alternate; 
  4.  
  5.  
  6.   
  7.  
  8. #stop:checked ~ .animation { 
  9.  
  10.     animation-play-state: paused; 
  11.  
  12.  
  13.   
  14.  
  15. #play:checked ~ .animation { 
  16.  
  17.     animation-play-state: running; 
  18.  

 

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

DEMO — 純 CSS 方式實現 CSS 動畫的暫停與播放:(https://codepen.io/Chokcoco/pen/QpJwBW)

上面的示例 Demo 中,實現了純 CSS 方式實現 CSS 動畫的暫停與播放。

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

到此本文結束,如果還有什么疑問或者建議,可以多多交流,原創文章,文筆有限,才疏學淺,文中若有不正之處,萬望告知。

開本系列,談談一些有趣的 CSS 題目,題目類型天馬行空,想到什么說什么,不僅為了拓寬一下解決問題的思路,更涉及一些容易忽視的 CSS 細節。

解題不考慮兼容性,題目天馬行空,想到什么說什么,如果解題中有你感覺到生僻的 CSS 屬性,趕緊去補習一下吧。

不斷更新,不斷更新,不斷更新,重要的事情說三遍。 

責任編輯:龐桂玉 來源: 前端大全
相關推薦

2022-08-29 17:39:53

應用開發css動畫

2023-11-01 08:33:45

CSS動畫效果

2021-10-19 22:23:47

CSSBeautiful按鈕

2024-08-29 08:13:58

2022-03-28 08:44:15

css3水波動畫

2021-02-09 07:26:38

前端css技術熱點

2021-01-19 12:16:10

CSS前端UI

2022-09-12 08:31:41

CSS3偽類URI

2013-04-08 14:07:28

CSS

2022-08-10 16:08:38

鴻蒙CSS

2020-11-04 13:55:06

CSS密室逃脫前端

2022-02-21 07:02:16

CSSbeautiful按鈕

2021-01-25 06:37:06

Css前端CSS 特效

2024-03-13 08:21:53

冒泡排序動畫

2017-05-03 11:30:20

CSS3小黃人動畫

2024-07-31 20:38:18

2022-03-16 14:27:49

CSS三角形前端

2015-04-24 10:05:15

HTML+CSS阿童木頭像

2024-05-09 00:00:00

CSS標簽JavaScript

2023-06-05 09:28:32

CSS漸變
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美二三区 | 91视频中文| 国产精品久久久久久久久久久久久久 | 乳色吐息在线观看 | 欧美一区二区久久 | 91视视频在线观看入口直接观看 | 亚洲福利视频网 | 亚洲永久字幕 | 国内精品久久久久久 | 欧美一级免费看 | 天天爱爱网| 国产91在线 | 欧美 | 国产精品99久久久久久宅男 | 亚洲天堂久久 | 91久久视频 | 亚洲网站在线观看 | 两性午夜视频 | 久久精品久久久久久 | 伊人春色成人网 | 91精品国产综合久久久久 | www.青娱乐| 女人牲交视频一级毛片 | 国产亚洲一区二区精品 | 国产成人在线一区 | 国产精品一区二区不卡 | 97操操 | 国产精品毛片av一区 | 亚洲久久 | 国产成人免费 | 国产亚洲精品综合一区 | 中文字幕第九页 | 国产电影一区二区在线观看 | 精品视频在线免费观看 | 日韩欧美高清 | 中文字幕一区在线观看视频 | 成人在线视频一区 | 成人福利网站 | 91久久久久久久久久久久久 | 久久精品亚洲 | 国产精品123区 | 在线成人免费观看 |