JavaScript 動畫庫:GreenSock (GSAP) 和 Three.js


JavaScript 動畫庫徹底改變了 Web 開發人員建立互動式和引人入勝的使用者體驗的方式。隨著對視覺上吸引人的網站和 Web 應用程式的需求不斷增長,動畫庫已成為開發人員工具箱中必不可少的工具。在本文中,我們將探討兩個流行的 JavaScript 動畫庫:GreenSock (GSAP) 和 Three.js。我們將深入探討其功能,提供帶有註釋和解釋的程式碼示例,並展示每個庫的動畫功能的輸出。

GreenSock (GSAP)

GreenSock,也稱為 GSAP,是一個強大且廣泛使用的 JavaScript 動畫庫。它提供了一套全面的工具和功能,可在各種平臺和裝置上建立流暢、高效能的動畫。GSAP 以其易用性和靈活性而聞名,使其成為開發人員的熱門選擇。

讓我們從一個簡單的程式碼示例開始,該示例演示了 GSAP 動畫 HTML 元素的基本用法。

// HTML element to animate
const element = document.getElementById('myElement');

// Define the animation timeline
const timeline = gsap.timeline();

// Add animation to the timeline
timeline.from(element, { duration: 1, opacity: 0, y: -50 });

// Play the animation
timeline.play();

現在讓我們考慮我們將使用上述動畫庫程式碼的 html 程式碼。

示例

<!DOCTYPE html>
<html>
<head>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.9.1/gsap.min.js"></script>
   <style>
      #myElement {
         width: 100px;
         height: 100px;
         background-color: red;
      }
   </style>
</head>
<body>
   <div id="myElement"></div>

   <script>
      const element = document.getElementById('myElement');
      const timeline = gsap.timeline();
      timeline.from(element, { duration: 1, opacity: 0, y: -50 });
      timeline.play();
   </script>
</body>
</html>

說明

在上面的程式碼中,我們首先使用 getElementById 方法選擇一個 HTML 元素。然後,我們使用 gsap.timeline() 建立一個 GSAP 時間線物件。時間線允許我們組織和控制多個動畫。然後,我們使用 from 方法向時間線新增一個動畫,該方法指定動畫應從提供的物件中定義的初始狀態開始。在本例中,我們為元素設定 1 秒的持續時間,使其不透明度從 0 漸變到 1,並將其沿 Y 軸向上移動 50 畫素。最後,我們透過在時間線上呼叫 play 方法來播放動畫。

上面的程式碼將透過從初始不透明度 0 淡入並向上移動 50 畫素來為元素設定動畫。您可以修改屬性和持續時間以實現不同的效果。

Three.js

雖然 GSAP 專注於 2D 動畫,但 Three.js 是一個功能強大的 JavaScript 庫,專門用於 3D 圖形和動畫。它提供了廣泛的功能和工具,用於在 Web 上建立複雜且視覺上令人驚歎的 3D 體驗。

要開始使用 Three.js,我們需要設定場景、攝像機和渲染器。這是一個演示基本設定併為 3D 物件設定動畫的示例。

示例

<!DOCTYPE html>
<html>
<head>
   <script src="https://threejs.org/build/three.min.js"></script>
   <style>
      body { margin: 0; }
      canvas { display: block; }
   </style>
</head>
<body>
   <script>
      document.addEventListener('DOMContentLoaded', function() {
         // Set up the scene
         const scene = new THREE.Scene();
      
         // Set up the camera
         const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
         camera.position.z = 5;
      
         // Set up the renderer
         const renderer = new THREE.WebGLRenderer({ antialias: true });
         renderer.setSize(window.innerWidth, window.innerHeight);
         document.body.appendChild(renderer.domElement);
      
         // Create a geometry (e.g., a cube)
         const geometry = new THREE.BoxGeometry();
         const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
         const cube = new THREE.Mesh(geometry, material);
         scene.add(cube);
      
         // Animation loop
         function animate() {
            requestAnimationFrame(animate);
            cube.rotation.x += 0.01;
            cube.rotation.y += 0.01;
            renderer.render(scene, camera);
         }
    
         // Start the animation loop
         animate();
      });
   </script>
</body>
</html>

說明

在上面的程式碼中,我們首先使用適當的 Three.js 類設定場景、攝像機和渲染器。我們建立一個透視攝像機,並將其放置在 3D 空間中的 (0, 0, 5) 位置。渲染器設定為使用 WebGL 進行渲染,並附加到 HTML 主體。

接下來,我們透過定義其幾何形狀和材質來建立一個立方體。使用 add 方法將立方體新增到場景中。

然後,我們定義一個 animate 函式,該函式將遞迴呼叫以建立動畫迴圈。在函式內部,我們更新立方體在 X 和 Y 軸上的旋轉。最後,我們使用渲染器的 render 方法使用攝像機渲染場景。

上面的程式碼將在螢幕上渲染一個旋轉的 3D 立方體。您可以修改立方體的屬性和動畫邏輯以建立各種 3D 效果。

結論

在本文中,我們探討了兩個流行的 JavaScript 動畫庫:GreenSock (GSAP) 和 Three.js。我們討論了 GSAP 的易用性,並使用 GSAP 演示了一個基本的動畫示例。我們還探討了 Three.js,重點介紹了其建立沉浸式 3D 動畫的功能。我們提供了一個程式碼示例,該示例設定了一個基本場景,為 3D 物件設定動畫,並使用 Three.js 渲染它。

GSAP 和 Three.js 都提供了強大的功能和靈活性來增強 Web 上的使用者體驗。無論您需要建立引人入勝的 2D 動畫還是構建沉浸式 3D 環境,這些庫都可以在您的開發工具包中成為寶貴的工具。嘗試程式碼示例,探索文件,並釋放您對 JavaScript 動畫庫的創造力。

更新於: 2023年7月25日

505 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告