初始提交:全国牛产业大数据中心大屏项目

This commit is contained in:
2025-10-27 17:29:42 +08:00
commit b47ec8eb88
694 changed files with 35059 additions and 0 deletions

BIN
public/data/map/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 KiB

BIN
public/data/map/bg.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 470 KiB

BIN
public/data/map/dbg.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 806 KiB

BIN
public/data/map/gz-map.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 277 KiB

BIN
public/data/map/sc-map.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 450 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 708 KiB

BIN
public/data/map/sidebg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 489 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

BIN
public/data/map/牛.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 KiB

24
public/favicon.svg Normal file
View File

@@ -0,0 +1,24 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<!-- 背景圆形 -->
<circle cx="16" cy="16" r="15" fill="#0c1426" stroke="#00d4ff" stroke-width="2"/>
<!-- 牛头轮廓 -->
<path d="M8 18 Q8 12 12 10 Q16 8 20 10 Q24 12 24 18 L22 20 Q20 22 16 22 Q12 22 10 20 Z" fill="#00d4ff" opacity="0.8"/>
<!-- 牛角 -->
<path d="M10 12 Q8 10 7 8" stroke="#00ffff" stroke-width="2" fill="none" stroke-linecap="round"/>
<path d="M22 12 Q24 10 25 8" stroke="#00ffff" stroke-width="2" fill="none" stroke-linecap="round"/>
<!-- 眼睛 -->
<circle cx="13" cy="15" r="1.5" fill="#ffffff"/>
<circle cx="19" cy="15" r="1.5" fill="#ffffff"/>
<!-- 鼻子 -->
<ellipse cx="16" cy="18" rx="2" ry="1" fill="#ffffff" opacity="0.6"/>
<!-- 数据点装饰 -->
<circle cx="6" cy="8" r="1" fill="#00ffff" opacity="0.6"/>
<circle cx="26" cy="8" r="1" fill="#00ffff" opacity="0.6"/>
<circle cx="6" cy="24" r="1" fill="#00ffff" opacity="0.6"/>
<circle cx="26" cy="24" r="1" fill="#00ffff" opacity="0.6"/>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

32
public/texture/earth.svg Normal file
View File

@@ -0,0 +1,32 @@
<svg width="512" height="256" xmlns="http://www.w3.org/2000/svg">
<defs>
<radialGradient id="earthGradient" cx="50%" cy="30%" r="70%">
<stop offset="0%" style="stop-color:#4a90e2;stop-opacity:1" />
<stop offset="30%" style="stop-color:#2c5aa0;stop-opacity:1" />
<stop offset="70%" style="stop-color:#1a365d;stop-opacity:1" />
<stop offset="100%" style="stop-color:#0f2027;stop-opacity:1" />
</radialGradient>
<pattern id="continents" patternUnits="userSpaceOnUse" width="512" height="256">
<rect width="512" height="256" fill="url(#earthGradient)"/>
<!-- 简化的大陆轮廓 -->
<path d="M50 80 Q100 60 150 80 Q200 100 250 80 Q300 60 350 80 Q400 100 450 80"
stroke="#2d5016" stroke-width="3" fill="none" opacity="0.6"/>
<path d="M30 120 Q80 100 130 120 Q180 140 230 120 Q280 100 330 120 Q380 140 430 120"
stroke="#2d5016" stroke-width="2" fill="none" opacity="0.4"/>
<path d="M70 160 Q120 140 170 160 Q220 180 270 160 Q320 140 370 160 Q420 180 470 160"
stroke="#2d5016" stroke-width="2" fill="none" opacity="0.4"/>
<!-- 添加一些点状细节 -->
<circle cx="100" cy="90" r="2" fill="#2d5016" opacity="0.3"/>
<circle cx="200" cy="110" r="1.5" fill="#2d5016" opacity="0.3"/>
<circle cx="300" cy="130" r="2" fill="#2d5016" opacity="0.3"/>
<circle cx="400" cy="100" r="1.5" fill="#2d5016" opacity="0.3"/>
</pattern>
</defs>
<rect width="512" height="256" fill="url(#continents)"/>
<!-- 添加一些云层效果 -->
<ellipse cx="150" cy="60" rx="40" ry="15" fill="white" opacity="0.1"/>
<ellipse cx="350" cy="80" rx="50" ry="20" fill="white" opacity="0.1"/>
<ellipse cx="250" cy="180" rx="45" ry="18" fill="white" opacity="0.1"/>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
public/texture/光柱.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

33
public/texture/光柱.svg Normal file
View File

@@ -0,0 +1,33 @@
<svg width="32" height="256" viewBox="0 0 32 256" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="beamGradient" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" style="stop-color:#00ffff;stop-opacity:0" />
<stop offset="10%" style="stop-color:#00ffff;stop-opacity:0.8" />
<stop offset="50%" style="stop-color:#0088ff;stop-opacity:1" />
<stop offset="90%" style="stop-color:#00ffff;stop-opacity:0.8" />
<stop offset="100%" style="stop-color:#00ffff;stop-opacity:0" />
</linearGradient>
<radialGradient id="beamRadial" cx="50%" cy="50%" r="50%">
<stop offset="0%" style="stop-color:#ffffff;stop-opacity:0.8" />
<stop offset="30%" style="stop-color:#00ffff;stop-opacity:0.6" />
<stop offset="70%" style="stop-color:#0088ff;stop-opacity:0.4" />
<stop offset="100%" style="stop-color:#004488;stop-opacity:0" />
</radialGradient>
<filter id="beamGlow">
<feGaussianBlur stdDeviation="2" result="coloredBlur"/>
<feMerge>
<feMergeNode in="coloredBlur"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
</defs>
<!-- 主光柱 -->
<rect x="8" y="0" width="16" height="256" fill="url(#beamGradient)" filter="url(#beamGlow)"/>
<!-- 中心亮线 -->
<rect x="14" y="0" width="4" height="256" fill="url(#beamRadial)" opacity="0.8"/>
<!-- 外发光效果 -->
<rect x="4" y="0" width="24" height="256" fill="url(#beamGradient)" opacity="0.3" filter="url(#beamGlow)"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,44 @@
<svg width="256" height="256" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="normalGradient1" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#8080ff;stop-opacity:1" />
<stop offset="50%" style="stop-color:#8080c0;stop-opacity:1" />
<stop offset="100%" style="stop-color:#8080a0;stop-opacity:1" />
</linearGradient>
<linearGradient id="normalGradient2" x1="100%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" style="stop-color:#ff8080;stop-opacity:1" />
<stop offset="50%" style="stop-color:#c08080;stop-opacity:1" />
<stop offset="100%" style="stop-color:#a08080;stop-opacity:1" />
</linearGradient>
<radialGradient id="normalRadial" cx="50%" cy="50%" r="50%">
<stop offset="0%" style="stop-color:#8080ff;stop-opacity:1" />
<stop offset="50%" style="stop-color:#8080c0;stop-opacity:1" />
<stop offset="100%" style="stop-color:#808080;stop-opacity:1" />
</radialGradient>
<filter id="normalNoise">
<feTurbulence baseFrequency="0.05" numOctaves="3" result="noise"/>
<feColorMatrix in="noise" type="matrix" values="0.5 0 0 0 0.5 0 0.5 0 0 0.5 0 0 0.5 0 0.5 0 0 0 1 0"/>
<feComposite operator="multiply" in2="SourceGraphic"/>
</filter>
</defs>
<!-- 基础法线颜色 -->
<rect width="256" height="256" fill="#8080ff"/>
<!-- 法线变化区域1 -->
<polygon points="0,0 128,64 256,0 256,128 128,192 0,128" fill="url(#normalGradient1)" opacity="0.6"/>
<!-- 法线变化区域2 -->
<polygon points="0,128 128,64 256,128 256,256 128,192 0,256" fill="url(#normalGradient2)" opacity="0.5"/>
<!-- 中心法线区域 -->
<circle cx="128" cy="128" r="80" fill="url(#normalRadial)" opacity="0.7"/>
<!-- 添加细节噪声 -->
<rect width="256" height="256" fill="#8080c0" opacity="0.4" filter="url(#normalNoise)"/>
<!-- 法线细节 -->
<rect x="60" y="60" width="40" height="40" fill="#9090ff" opacity="0.3"/>
<rect x="156" y="80" width="30" height="30" fill="#7070ff" opacity="0.4"/>
<rect x="100" y="180" width="35" height="35" fill="#a0a0ff" opacity="0.3"/>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -0,0 +1,56 @@
<svg width="512" height="512" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg">
<defs>
<radialGradient id="heightGradient1" cx="20%" cy="30%" r="25%">
<stop offset="0%" style="stop-color:#ffffff;stop-opacity:1" />
<stop offset="50%" style="stop-color:#cccccc;stop-opacity:0.8" />
<stop offset="100%" style="stop-color:#888888;stop-opacity:0.6" />
</radialGradient>
<radialGradient id="heightGradient2" cx="70%" cy="20%" r="20%">
<stop offset="0%" style="stop-color:#ffffff;stop-opacity:0.9" />
<stop offset="50%" style="stop-color:#bbbbbb;stop-opacity:0.7" />
<stop offset="100%" style="stop-color:#777777;stop-opacity:0.5" />
</radialGradient>
<radialGradient id="heightGradient3" cx="30%" cy="80%" r="30%">
<stop offset="0%" style="stop-color:#eeeeee;stop-opacity:0.8" />
<stop offset="50%" style="stop-color:#aaaaaa;stop-opacity:0.6" />
<stop offset="100%" style="stop-color:#666666;stop-opacity:0.4" />
</radialGradient>
<radialGradient id="heightGradient4" cx="80%" cy="70%" r="15%">
<stop offset="0%" style="stop-color:#dddddd;stop-opacity:0.7" />
<stop offset="50%" style="stop-color:#999999;stop-opacity:0.5" />
<stop offset="100%" style="stop-color:#555555;stop-opacity:0.3" />
</radialGradient>
<filter id="noise">
<feTurbulence baseFrequency="0.02" numOctaves="4" result="noise"/>
<feColorMatrix in="noise" type="saturate" values="0"/>
<feComponentTransfer>
<feFuncA type="discrete" tableValues="0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1"/>
</feComponentTransfer>
<feComposite operator="multiply" in2="SourceGraphic"/>
</filter>
</defs>
<!-- 基础地形 -->
<rect width="512" height="512" fill="#333333"/>
<!-- 高度区域1 -->
<ellipse cx="100" cy="150" rx="120" ry="80" fill="url(#heightGradient1)" opacity="0.8"/>
<!-- 高度区域2 -->
<ellipse cx="360" cy="100" rx="100" ry="60" fill="url(#heightGradient2)" opacity="0.7"/>
<!-- 高度区域3 -->
<ellipse cx="150" cy="400" rx="150" ry="100" fill="url(#heightGradient3)" opacity="0.6"/>
<!-- 高度区域4 -->
<ellipse cx="400" cy="350" rx="80" ry="50" fill="url(#heightGradient4)" opacity="0.5"/>
<!-- 添加噪声纹理 -->
<rect width="512" height="512" fill="#666666" opacity="0.3" filter="url(#noise)"/>
<!-- 细节高度点 -->
<circle cx="200" cy="200" r="20" fill="#aaaaaa" opacity="0.4"/>
<circle cx="300" cy="250" r="15" fill="#bbbbbb" opacity="0.3"/>
<circle cx="120" cy="300" r="25" fill="#999999" opacity="0.5"/>
<circle cx="450" cy="180" r="18" fill="#cccccc" opacity="0.4"/>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -0,0 +1,41 @@
<svg width="128" height="128" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
<defs>
<radialGradient id="ringGradient" cx="50%" cy="50%" r="50%">
<stop offset="0%" style="stop-color:#00ffff;stop-opacity:0" />
<stop offset="40%" style="stop-color:#00ffff;stop-opacity:0" />
<stop offset="45%" style="stop-color:#00ffff;stop-opacity:0.8" />
<stop offset="55%" style="stop-color:#0088ff;stop-opacity:1" />
<stop offset="60%" style="stop-color:#00ffff;stop-opacity:0.8" />
<stop offset="100%" style="stop-color:#00ffff;stop-opacity:0" />
</radialGradient>
<linearGradient id="ringLinear" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#00ffff;stop-opacity:0.3" />
<stop offset="25%" style="stop-color:#0088ff;stop-opacity:0.8" />
<stop offset="50%" style="stop-color:#00ffff;stop-opacity:1" />
<stop offset="75%" style="stop-color:#0088ff;stop-opacity:0.8" />
<stop offset="100%" style="stop-color:#00ffff;stop-opacity:0.3" />
</linearGradient>
<filter id="ringGlow">
<feGaussianBlur stdDeviation="2" result="coloredBlur"/>
<feMerge>
<feMergeNode in="coloredBlur"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
</defs>
<!-- 外环 -->
<circle cx="64" cy="64" r="58" fill="none" stroke="url(#ringLinear)" stroke-width="4" opacity="0.6" filter="url(#ringGlow)"/>
<!-- 中环 -->
<circle cx="64" cy="64" r="48" fill="none" stroke="url(#ringLinear)" stroke-width="3" opacity="0.8" filter="url(#ringGlow)"/>
<!-- 内环 -->
<circle cx="64" cy="64" r="38" fill="none" stroke="url(#ringLinear)" stroke-width="2" opacity="1" filter="url(#ringGlow)"/>
<!-- 装饰点 -->
<circle cx="122" cy="64" r="3" fill="#00ffff" opacity="0.8"/>
<circle cx="64" cy="6" r="2" fill="#0088ff" opacity="0.6"/>
<circle cx="6" cy="64" r="2" fill="#00ffff" opacity="0.7"/>
<circle cx="64" cy="122" r="2" fill="#0088ff" opacity="0.5"/>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

81
public/texture/星空.svg Normal file
View File

@@ -0,0 +1,81 @@
<svg width="1024" height="1024" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
<defs>
<radialGradient id="starGradient" cx="50%" cy="50%" r="50%">
<stop offset="0%" style="stop-color:#ffffff;stop-opacity:1" />
<stop offset="30%" style="stop-color:#ccddff;stop-opacity:0.8" />
<stop offset="70%" style="stop-color:#8899cc;stop-opacity:0.4" />
<stop offset="100%" style="stop-color:#445566;stop-opacity:0" />
</radialGradient>
<radialGradient id="nebulaGradient" cx="30%" cy="40%" r="60%">
<stop offset="0%" style="stop-color:#ff6699;stop-opacity:0.3" />
<stop offset="40%" style="stop-color:#6699ff;stop-opacity:0.2" />
<stop offset="80%" style="stop-color:#99ff66;stop-opacity:0.1" />
<stop offset="100%" style="stop-color:#000033;stop-opacity:0" />
</radialGradient>
<filter id="starGlow">
<feGaussianBlur stdDeviation="2" result="coloredBlur"/>
<feMerge>
<feMergeNode in="coloredBlur"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
<filter id="twinkle">
<feTurbulence baseFrequency="0.01" numOctaves="2" result="noise"/>
<feColorMatrix in="noise" type="saturate" values="0"/>
<feComponentTransfer>
<feFuncA type="discrete" tableValues="0 0.2 0.4 0.6 0.8 1"/>
</feComponentTransfer>
<feComposite operator="multiply" in2="SourceGraphic"/>
</filter>
</defs>
<!-- 深空背景 -->
<rect width="1024" height="1024" fill="#000011"/>
<!-- 星云效果 -->
<ellipse cx="300" cy="200" rx="200" ry="150" fill="url(#nebulaGradient)" opacity="0.4"/>
<ellipse cx="700" cy="600" rx="180" ry="120" fill="url(#nebulaGradient)" opacity="0.3"/>
<ellipse cx="150" cy="800" rx="160" ry="100" fill="url(#nebulaGradient)" opacity="0.2"/>
<!-- 大星星 -->
<circle cx="100" cy="100" r="3" fill="url(#starGradient)" filter="url(#starGlow)"/>
<circle cx="300" cy="150" r="2.5" fill="url(#starGradient)" filter="url(#starGlow)"/>
<circle cx="500" cy="80" r="3.5" fill="url(#starGradient)" filter="url(#starGlow)"/>
<circle cx="700" cy="200" r="2" fill="url(#starGradient)" filter="url(#starGlow)"/>
<circle cx="900" cy="120" r="2.8" fill="url(#starGradient)" filter="url(#starGlow)"/>
<!-- 中等星星 -->
<circle cx="150" cy="300" r="2" fill="#ffffff" opacity="0.8" filter="url(#starGlow)"/>
<circle cx="350" cy="400" r="1.8" fill="#ccddff" opacity="0.7" filter="url(#starGlow)"/>
<circle cx="550" cy="350" r="2.2" fill="#ffffff" opacity="0.9" filter="url(#starGlow)"/>
<circle cx="750" cy="450" r="1.5" fill="#ddccff" opacity="0.6" filter="url(#starGlow)"/>
<circle cx="850" cy="380" r="1.9" fill="#ffffff" opacity="0.8" filter="url(#starGlow)"/>
<!-- 小星星群 -->
<circle cx="80" cy="500" r="1" fill="#ffffff" opacity="0.6"/>
<circle cx="120" cy="520" r="0.8" fill="#ccddff" opacity="0.5"/>
<circle cx="200" cy="480" r="1.2" fill="#ffffff" opacity="0.7"/>
<circle cx="280" cy="550" r="0.9" fill="#ddccff" opacity="0.4"/>
<circle cx="320" cy="580" r="1.1" fill="#ffffff" opacity="0.6"/>
<circle cx="450" cy="600" r="1" fill="#ffffff" opacity="0.5"/>
<circle cx="480" cy="650" r="0.7" fill="#ccddff" opacity="0.4"/>
<circle cx="520" cy="620" r="1.3" fill="#ffffff" opacity="0.8"/>
<circle cx="580" cy="680" r="0.8" fill="#ddccff" opacity="0.3"/>
<circle cx="620" cy="700" r="1" fill="#ffffff" opacity="0.6"/>
<circle cx="200" cy="750" r="1.1" fill="#ffffff" opacity="0.7"/>
<circle cx="250" cy="800" r="0.9" fill="#ccddff" opacity="0.5"/>
<circle cx="300" cy="780" r="1.2" fill="#ffffff" opacity="0.6"/>
<circle cx="380" cy="820" r="0.8" fill="#ddccff" opacity="0.4"/>
<circle cx="420" cy="850" r="1" fill="#ffffff" opacity="0.5"/>
<circle cx="700" cy="800" r="1" fill="#ffffff" opacity="0.6"/>
<circle cx="750" cy="850" r="0.7" fill="#ccddff" opacity="0.4"/>
<circle cx="800" cy="820" r="1.3" fill="#ffffff" opacity="0.8"/>
<circle cx="880" cy="880" r="0.9" fill="#ddccff" opacity="0.5"/>
<circle cx="920" cy="900" r="1.1" fill="#ffffff" opacity="0.7"/>
<!-- 闪烁效果层 -->
<rect width="1024" height="1024" fill="#ffffff" opacity="0.05" filter="url(#twinkle)"/>
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
public/texture/标注.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

28
public/texture/标注.svg Normal file
View File

@@ -0,0 +1,28 @@
<svg width="64" height="64" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
<defs>
<radialGradient id="pointGradient" cx="50%" cy="50%" r="50%">
<stop offset="0%" style="stop-color:#00ffff;stop-opacity:1" />
<stop offset="70%" style="stop-color:#0088ff;stop-opacity:0.8" />
<stop offset="100%" style="stop-color:#004488;stop-opacity:0.3" />
</radialGradient>
<filter id="glow">
<feGaussianBlur stdDeviation="3" result="coloredBlur"/>
<feMerge>
<feMergeNode in="coloredBlur"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
</defs>
<!-- 外圈发光 -->
<circle cx="32" cy="32" r="28" fill="url(#pointGradient)" opacity="0.3" filter="url(#glow)"/>
<!-- 主体圆点 -->
<circle cx="32" cy="32" r="16" fill="url(#pointGradient)" filter="url(#glow)"/>
<!-- 内部亮点 -->
<circle cx="32" cy="32" r="8" fill="#ffffff" opacity="0.8"/>
<!-- 中心点 -->
<circle cx="32" cy="32" r="3" fill="#00ffff"/>
</svg>

After

Width:  |  Height:  |  Size: 1022 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -0,0 +1,26 @@
<svg width="128" height="128" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
<defs>
<radialGradient id="haloGradient" cx="50%" cy="50%" r="50%">
<stop offset="0%" style="stop-color:#00ffff;stop-opacity:0" />
<stop offset="30%" style="stop-color:#00ffff;stop-opacity:0.2" />
<stop offset="60%" style="stop-color:#00ffff;stop-opacity:0.8" />
<stop offset="80%" style="stop-color:#0088ff;stop-opacity:0.6" />
<stop offset="100%" style="stop-color:#004488;stop-opacity:0" />
</radialGradient>
<filter id="blur">
<feGaussianBlur stdDeviation="2" result="coloredBlur"/>
</filter>
</defs>
<!-- 外圈光晕 -->
<circle cx="64" cy="64" r="60" fill="none" stroke="url(#haloGradient)" stroke-width="8" opacity="0.4" filter="url(#blur)"/>
<!-- 中圈光晕 -->
<circle cx="64" cy="64" r="45" fill="none" stroke="url(#haloGradient)" stroke-width="6" opacity="0.6" filter="url(#blur)"/>
<!-- 内圈光晕 -->
<circle cx="64" cy="64" r="30" fill="none" stroke="url(#haloGradient)" stroke-width="4" opacity="0.8" filter="url(#blur)"/>
<!-- 主体光圈 -->
<circle cx="64" cy="64" r="50" fill="url(#haloGradient)" opacity="0.3"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

26
public/texture/粒子.svg Normal file
View File

@@ -0,0 +1,26 @@
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
<defs>
<radialGradient id="particleGradient" cx="50%" cy="50%" r="50%">
<stop offset="0%" style="stop-color:#ffffff;stop-opacity:1" />
<stop offset="30%" style="stop-color:#00ffff;stop-opacity:0.8" />
<stop offset="70%" style="stop-color:#0088ff;stop-opacity:0.4" />
<stop offset="100%" style="stop-color:#004488;stop-opacity:0" />
</radialGradient>
<filter id="particleGlow">
<feGaussianBlur stdDeviation="1" result="coloredBlur"/>
<feMerge>
<feMergeNode in="coloredBlur"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
</defs>
<!-- 主粒子 -->
<circle cx="8" cy="8" r="6" fill="url(#particleGradient)" filter="url(#particleGlow)"/>
<!-- 内核 -->
<circle cx="8" cy="8" r="3" fill="#ffffff" opacity="0.9"/>
<!-- 中心点 -->
<circle cx="8" cy="8" r="1" fill="#00ffff"/>
</svg>

After

Width:  |  Height:  |  Size: 975 B