SVG动画案例库

浏览精选的SVG动画案例

移开即停止播放
import React, { useState, useEffect, useRef, useMemo } from 'react'; const VIEW_WIDTH = 1000; const VIEW_HEIGHT = 600; export default function ScbaTrainingAnimation() { const [step, setStep] = useState(0); // 0: Intro, 1: Check, 2: Backpack, 3: Mask, 4: Breathe const [subProgress, setSubProgress] = useState(0); const [breathingVal, setBreathingVal] = useState(0); // Animation Loop for continuous effects useEffect(() => { let animationFrameId; const startTime = Date.now();

穿戴空气呼吸器的动画

移开即停止播放
'use client'; import React, { useState, useEffect, useMemo, useRef } from 'react'; const VIEW_WIDTH = 1000; const VIEW_HEIGHT = 562; // 16:9 Aspect Ratio const COLOR_BG = '#0f172a'; const COLOR_PINK = '#ff00cc'; // Danganronpa Pink const COLOR_CYAN = '#00ffff'; const COLOR_YELLOW = '#ffcc00'; const COLOR_WHITE = '#ffffff'; export default function DanganronpaAnimation() { const [phase, setPhase] = useState(0); // 0: Search, 1: Lock, 2: Fire, 3: Break const [textIndex, setTextIndex] = useSt

弹丸论破

移开即停止播放
'use client'; import React, { useState, useEffect, useRef, useMemo } from 'react'; // --- Configuration & Constants --- const VIEW_WIDTH = 1000; const VIEW_HEIGHT = 600; const COURT_WIDTH = 800; const COURT_HEIGHT = 400; const PAD_X = (VIEW_WIDTH - COURT_WIDTH) / 2; const PAD_Y = (VIEW_HEIGHT - COURT_HEIGHT) / 2; const NET_X = VIEW_WIDTH / 2; const KITCHEN_WIDTH = 64; // Non-Volley Zone width (scaled) const KITCHEN_LEFT = NET_X - KITCHEN_WIDTH; const KITCHEN_RIGHT = NET_X + KITCHEN_WIDTH; //

画一个有球场动画的匹克球接发球,记分

移开即停止播放
'use client'; import React, { useState, useEffect, useRef, useMemo } from 'react'; const VIEW_WIDTH = 1000; const VIEW_HEIGHT = 600; const CENTER_Y = VIEW_HEIGHT / 2; // Helper to convert degrees to radians const rad = (deg) => (deg * Math.PI) / 180; // Helper for circular motion const getCirclePt = (cx, cy, r, angleRad) => ({ x: cx + r * Math.cos(angleRad), y: cy + r * Math.sin(angleRad), }); export default function FOCAnimation() { const [angle, setAngle] = useState(0); const [his

根据工业级开源FOC---VESC项目制作 一个关于FOC电

移开即停止播放
import React, { useState, useEffect, useMemo, useRef } from 'react'; const AI_Music_Gen_View = () => { const VIEW_WIDTH = 1000; const VIEW_HEIGHT = 562; // 16:9 const DURATION = 12000; // 12 seconds loop const [time, setTime] = useState(0); // Animation Loop useEffect(() => { let startTimestamp; let reqId; const step = (timestamp) => { if (!startTimestamp) startTimestamp = timestamp; const elapsed = timestamp - startTimestamp; setTime(elapsed % DUR

1. 特写:AI音乐合成系统,“青春励志歌词”自动填充,流行

移开即停止播放
import React, { useState, useEffect, useRef, useMemo } from 'react'; const VIEW_WIDTH = 1000; const VIEW_HEIGHT = 600; // Utility for 3D projection const project = (x, y, z, width, height, time) => { const scale = 200 / (200 + z); const x2d = x * scale + width / 2; const y2d = y * scale + height / 2; return { x: x2d, y: y2d, scale }; }; // Component: Script / Code Rain const ScriptPanel = ({ active }) => { const lines = useMemo(() => Array.from({ length: 12 }, (_, i) => ({ id: i

2. 分屏1:左上生成剧本摘要,右上自动生成分镜草图; 3.

广告

Ads
移开即停止播放
'use client'; import React, { useState, useEffect, useMemo } from 'react'; // 视图配置:使用标准 HD 比例 1280x720 以保证 16:9 的完美适配 const VIEW_WIDTH = 1280; const VIEW_HEIGHT = 720; const CENTER_X = VIEW_WIDTH / 2; const CENTER_Y = VIEW_HEIGHT / 2; // 配色方案:科技蓝、警告橙、数据白 const THEME = { bg: '#0f172a', // Slate 900 primary: '#00f0ff', // Cyber Cyan secondary: '#3b82f6', // Tech Blue accent: '#f59e0b', // Amber Warning highlight: '#ffffff', // Pure White grid: '#1e293b', // Grid Lin

先出现中间一个16:9的方框,方框由是高科技感的光线环绕,先

移开即停止播放
'use client'; import React, { useState, useEffect, useRef, useMemo } from 'react'; const VIEW_WIDTH = 1000; const VIEW_HEIGHT = 600; const BG_COLOR = "#0f172a"; const PRIMARY_COLOR = "#38bdf8"; // Sky blue for Input const SECONDARY_COLOR = "#f472b6"; // Pink for Output const ACCENT_COLOR = "#4ade80"; // Green for Retention const TEXT_COLOR = "#e2e8f0"; // Particle Types type Particle = { id: number; x: number; y: number; vx: number; vy: number; life: number; type: 'input' | 'out

知識を習得するために、自ら出力をする必要があります。そのよう

移开即停止播放
'use client'; import React, { useState, useEffect, useRef, useMemo } from 'react'; const VIEW_WIDTH = 1000; const VIEW_HEIGHT = 600; const CENTER_Y = VIEW_HEIGHT / 2; const CIRCLE_X = 200; const RADIUS = 120; const WAVE_START_X = 380; const WAVE_WIDTH = 550; export const SinusoidalMotion = () => { const [time, setTime] = useState(0); const requestRef = useRef<number>(); const pointsRef = useRef<{ x: number; y: number }[]>([]); const animate = (t: number) => { setTime((prev) => pr

我要一个sin角运动的动画

移开即停止播放
```javascript 'use client'; import React, { useState, useEffect, useRef } from 'react'; // 配置常量 const VIEW_WIDTH = 800; const VIEW_HEIGHT = 450; const BG_COLOR = "#0f172a"; // 用户指定的背景色 const PRIMARY_COLOR = "#06b6d4"; // 科技蓝/青色 (Cyan) const DANGER_COLOR = "#ef4444"; // 警告红 (Red) const SUCCESS_COLOR = "#10b981"; // 成功绿 (Green) const TEXT_MAIN = "#f1f5f9"; // 主要文字 const TEXT_SUB = "#94a3b8"; // 次要文字 // 缓动函数 const easeOutBack = (x) => { const c1 = 1.70158; const c3 = c1 + 1; return 1 + c3

传统闪信的痛点文字应该显示出来

移开即停止播放
```javascript 'use client'; import React, { useState, useEffect, useRef, useMemo } from 'react'; const VIEW_WIDTH = 1000; const VIEW_HEIGHT = 600; // ---------------------------------------------------------------------- // 1. 基础数据与骨骼定义 (Poses & Skeleton) // ---------------------------------------------------------------------- // 骨骼关键点索引 const JOINTS = { HEAD: 0, NECK: 1, SPINE_TOP: 2, SPINE_BOTTOM: 3, L_SHOULDER: 4, L_ELBOW: 5, L_HAND: 6, R_SHOULDER: 7, R_ELBOW: 8, R_HAND: 9, L_HIP

畫一個太極拳的教學動畫