SVG动画案例库

浏览精选的SVG动画案例

移开即停止播放
```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 LONG_MARCH_PATH = [ { name: "瑞金", year: 1934, type: "depar

复刻原太平天国轨迹动画的所有形式,仅将事件替换为红军长征轨迹

移开即停止播放
'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

绘制一个太平天国运动轨迹动画,把最开始一幕金田村补上,其他不