如何使用 CSS 自定義屬性來播放和暫停 CSS 動畫?


在 CSS 中,動畫是為網站新增視覺效果的有效方法。但是,有時我們希望能夠更好地控制這些動畫的播放時間和方式。在這裡,我們將探討如何使用 CSS 自定義屬性來播放和暫停 CSS 動畫。

在開始之前,我們應該知道 CSS 動畫可以透過關鍵幀或在兩種或多種狀態之間進行過渡來建立。

語法

@keyframes animation-name {
   /* define the animation steps */
}

我們透過為動畫命名並使用 @keyframes 關鍵字來定義動畫。在花括號內,我們使用百分比或關鍵字值定義動畫的步驟。

在 CSS 中播放和暫停動畫

在 CSS 中,播放和暫停動畫指的是控制動畫元素的能力。它是一種為網站新增運動和視覺趣味的方法。

播放和暫停動畫允許我們控制這些動畫的播放時間和方式。如果我們希望使用者能夠在需要專注時暫停動畫,這將非常有用。

在 CSS 中,我們可以使用 animation-play-state 屬性來控制動畫是正在執行還是暫停。預設情況下,animation-play-state 屬性設定為 running,這意味著動畫將在頁面載入時自動播放。但是,我們可以使用 CSS 隨時更改此屬性的值以啟動或停止動畫。

要使用 CSS 建立播放和暫停動畫效果,您可以按照以下步驟操作:

步驟 1:定義動畫

在第一步中,我們需要定義要控制的動畫。我們可以使用關鍵幀建立一個簡單的動畫。

步驟 2:建立播放和暫停效果

定義動畫後,我們需要建立控制動畫的元素。我們可以使用任何 HTML 元素,如按鈕、複選框和懸停效果。

步驟 3:定義 CSS 自定義屬性

現在,我們需要定義將儲存動畫狀態的 CSS 自定義屬性。我們可以為自定義屬性使用任何名稱,但在此示例中,我們將使用 --animation-play-state 和 --animation-timingfunction。

我們將透過示例來理解上述概念。

示例 1

以下是如何建立簡單的滑動動畫的示例。

<!DOCTYPE html>
<html>
<head>
   <style>
      body { text-align: center;}
      .box {
         display: flex;
         height: 80px;
         width: 80px;
         border-radius: 10%;
         color: white;
         background-color: green;
         position: relative;
         animation: my-animation 6s infinite;
      }
      .box:hover { animation-play-state: paused;}
      @keyframes my-animation {
         from {left: 0px;}
         to {left: 400px;}
      }
   </style>
</head>
   <body>
      <h2>A simple animation of a slide</h2>
      <div class="box">Mouse Hove to give me a break.</div>
   </body>
</html>

示例 2

這是另一個如何使用 CSS 自定義屬性來播放和暫停 CSS 動畫的示例。

<!DOCTYPE html>
<html>
<head>
   <style>
      body { text-align: center; }
      .box {
         align-items: center;
         background-color: green;
         display: flex;
         height: 80px;
         width: 80px;
         margin-top: 10px;
         border-radius: 10%;
      }
      .my-slide {--animdur: 5s; --animn: slide; }
      [my-animation] {
         animation: var(--animn, none) var(--animdur, 0s) var(--animtf,
         linear) var(--animic, infinite) var(--animdir, alternate) var(--animps,
         running);
      }
      [my-animation-pause]:checked~[my-animation] {
         --animps: paused;
      }
      @keyframes slide {
         from { margin-left: 0%;}
         to {margin-left: calc(100% - 80px);}
      }
   </style>
</head>
   <body>
      <input type="checkbox" my-animation-pause id="move" class="#" />
      <label for="move" class="#">Check Me to play/paus</label>
      <div class="box my-slide" my-animation="stop"></div>
   </body>
</html>

結論

使用 CSS 自定義屬性來播放和暫停 CSS 動畫提供了一種簡單有效的方法來控制網頁上的動畫。在第一個示例中,我們使用關鍵幀動畫來定義動畫,並使用 animation-play-state 屬性來控制其狀態。在第二個示例中,我們使用過渡動畫並更改了自定義屬性的值來控制動畫的狀態。這兩種技術都提供了一種建立動態動畫的方法,這些動畫可以透過 CSS 輕鬆控制。

更新於: 2023 年 3 月 16 日

4K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告