SVG动画案例库
浏览精选的SVG动画案例
移开即停止播放
```javascript
'use client';
import React, { useState, useEffect, useMemo, useRef } from 'react';
// --- Configuration ---
const WIDTH = 1200;
const HEIGHT = 700;
const GRID_SIZE = 40;
const COLORS = {
bg: '#020617', // Deep Space
grid: '#1e293b', // Grid Lines
attacker: '#ef4444', // Red (Attacker)
target: '#3b82f6', // Blue (Target)
targetComp: '#8b5cf6',// Purple (Compromised)
packet: '#f59e0b', // Amber (Payload)
memory: '#334155', // Slate (Memory Block
生成一个讲解“永恒之蓝”漏洞复现的详细过程
移开即停止播放
```tsx
'use client';
import React, { useState, useEffect, useMemo, useRef } from 'react';
// --- Configuration & Constants ---
const VIEW_WIDTH = 1200;
const VIEW_HEIGHT = 700;
const GRID_SIZE = 400; // Size of the central demonstration area
const CELL_COUNT = 4; // 4x4 squares (5x5 intersection points)
const CELL_SIZE = GRID_SIZE / CELL_COUNT;
const OFFSET_X = (VIEW_WIDTH - GRID_SIZE) / 2;
const OFFSET_Y = (VIEW_HEIGHT - GRID_SIZE) / 2;
const COLORS = {
bg: '#0f172a', // Slate 900
创建一个讲解围棋基本规则的动画
移开即停止播放
import React, { useState, useEffect, useRef, useMemo } from 'react';
import { Shield, AlertTriangle, Activity, Server, Zap, Target } from 'lucide-react';
const WIDTH = 1200;
const HEIGHT = 700;
const CENTER_X = WIDTH / 2;
const CENTER_Y = HEIGHT / 2 + 50;
// 颜色定义
const THEMES = [
{ color: '#ef4444', name: '红区 (Alpha)', label: '核心数据库' }, // Red
{ color: '#3b82f6', name: '蓝区 (Beta)', label: '云端服务' }, // Blue
{ color: '#22c55e', name: '绿区 (Gamma)', label: '监控中心' }, // Green
{ color: '#
画一个网络阵地攻防的3D演示视屏,要求如下: 1. 存在6个
移开即停止播放
```javascript
import React, { useState, useEffect, useRef, useMemo } from 'react';
// ==========================================
// CONFIGURATION & CONSTANTS
// ==========================================
const WIDTH = 1200;
const HEIGHT = 700;
const BACKGROUND_COLOR = '#0f172a';
const FPS = 60;
// Base configuration: 6 bases in a ring
const BASE_COLORS = [
'#ef4444', // Red
'#3b82f6', // Blue
'#10b981', // Green
'#f59e0b', // Orange
'#8b5cf6', // Purple
'#06b6d4', // Cyan
];
const
生成一个网络阵地攻防的3D大屏展示界面,要求如下: 1. 界
移开即停止播放
import React, { useState, useEffect, useRef, useMemo } from 'react';
import { Activity, Dna, Lock, Zap, XCircle, Fingerprint } from 'lucide-react';
// ==========================================
// CONFIGURATION & CONSTANTS
// ==========================================
const VIEW_WIDTH = 1200;
const VIEW_HEIGHT = 600;
const FPS = 60;
const TOTAL_DURATION = 32; // seconds
// Colors
const COLORS = {
bg: '#0f172a',
initial: '#4ade80', // Light Green
desertBg: '#451a03', // Dark Orange/Brown
初始画面展示一群统一色调(如浅绿色)、形态柔和的圆形生物在平
移开即停止播放
```javascript
'use client';
import React, { useState, useEffect, useRef, useMemo } from 'react';
// ----------------------------------------------------------------------
// CONFIGURATION & CONSTANTS
// ----------------------------------------------------------------------
const WIDTH = 1080;
const HEIGHT = 1920;
const SCENE_DURATION = 6000; // ms per scene
const TOTAL_SCENES = 6;
const FADE_DURATION = 800; // ms
// Colors
const COLORS = {
bgStart: '#07121A',
bgEnd: '#050A10',
cyan: '#0
生成横屏 SVG 动画,主题《一目均衡表:结构识别而非预测》
移开即停止播放
'use client';
import React, { useState, useEffect, useRef, useMemo } from 'react';
const VIEW_WIDTH = 1000;
const VIEW_HEIGHT = 600;
const BG_COLOR = "#0f172a";
// -----------------------------------------------------------------------------
// Helpers & Math
// -----------------------------------------------------------------------------
const randomRange = (min, max) => Math.random() * (max - min) + min;
// Cubic Bezier point calculation
const getBezierPoint = (t, p0, p1, p2, p3) => {
c
1. 画面背景采用极具科技感的深邃靛蓝色调,SoC内部组件以
广告
Ads移开即停止播放
'use client';
import React, { useState, useEffect, useMemo, useRef } from 'react';
import { motion, AnimatePresence } from 'framer-motion';
import * as Lucide from 'lucide-react';
import * as d3 from 'd3';
export const LiBaiJourneyMap = () => {
const [geoData, setGeoData] = useState(null);
const [loading, setLoading] = useState(true);
const [currentIndex, setCurrentIndex] = useState(0);
const [isPlaying, setIsPlaying] = useState(false);
const [progress, setProgress] = useState(0); //
做一个李白一生的轨迹地图动画,重要节点需要进行文字标注
移开即停止播放
```javascript
'use client';
import React, { useState, useEffect, useMemo, useRef, useCallback, useLayoutEffect } from 'react';
import { motion, AnimatePresence } from 'framer-motion';
import * as Lucide from 'lucide-react';
import * as d3 from 'd3';
// -----------------------------------------------------------------------------
// Constants & Data
// -----------------------------------------------------------------------------
const TAIPING_PATH = [
{ name: "金田村", year: 1851, type: "uprisin
绘制一个太平天国运动轨迹动画,把最开始一幕金田村补上,其他不
移开即停止播放
import React, { useState, useEffect, useRef, useMemo } from 'react';
// -----------------------------------------------------------------------------
// Constants & Utilities
// -----------------------------------------------------------------------------
const WIDTH = 1000;
const HEIGHT = 600;
const BACKGROUND_COLOR = '#0f172a';
const PRIMARY_COLOR = '#06b6d4'; // Cyan-500
const SECONDARY_COLOR = '#8b5cf6'; // Violet-500
const ACCENT_COLOR = '#f59e0b'; // Amber-500
const TEXT_COLOR = '#e2e8f0'
周长的原理
移开即停止播放
'use client';
import React, { useState, useEffect, useRef, useMemo } from 'react';
// 动画视口配置
const VIEW_WIDTH = 1000;
const VIEW_HEIGHT = 600;
const CENTER_X = VIEW_WIDTH / 2;
const CENTER_Y = VIEW_HEIGHT / 2;
// 行星数据配置 (为了视觉效果,比例非真实天文比例)
const PLANETS = [
{ id: 'mercury', name: '水星', nameEn: 'Mercury', color: '#A5A5A5', size: 6, distance: 70, speed: 2.5, orbitColor: '#ffffff30' },
{ id: 'venus', name: '金星', nameEn: 'Venus', color: '#E3BB76', size: 10, distance: 100, speed: 1.8, orbitColo