Skip to content

[css] 讓 CSS 動畫重新開始

Published: at 08:44 AM (2 min read)

前一陣子在做 CSS 動畫的時候,遇到了特定情況會希望動畫重新開始的狀況

像是每點擊一次按鈕就觸發一次動畫的情境,查了一下相關的做法.記錄在這


舉個例子,我們有個 fade-in 的動畫,希望在點擊文字時重新開始動畫

<style>
  @keyframes fade-in {
    from {
      opacity: 0;
      left: -500px;
    }
    to {
      opacity: 1;
      left: 0;
    }
  }

  .fade-in {
    position: relative;
    animation: fade-in 2s ease;
  }
</style>
<h1 class="fade-in">Animation Text (click to restart)</h1>

這時候你可能會很直覺認為再次添加 fade-in class ,像是以下這樣

See the Pen restart css animation by camel2243 (@camel2243) on CodePen.

然後你會發現不 work,於是直覺會想說那先做 removeadd XD

See the Pen css animation demo1 by camel2243 (@camel2243) on CodePen.

結果發現還是不會動,只好開 setTimeout 大絕 www

See the Pen css animation demo3 by camel2243 (@camel2243) on CodePen.

雖然看起來不是很好,但是 It’s works!

這邊另外提供一種比較取巧的方式:

See the Pen css animation demo4 by camel2243 (@camel2243) on CodePen.

參考資料:

https://css-tricks.com/restart-css-animation/