我的反代,脚会转,但是没踩到踏板上。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>鹈鹕骑自行车 2D SVG 动画</title>
<style>
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
background: linear-gradient(135deg, #1b2838 0%, #0d131a 100%);
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", sans-serif;
overflow: hidden;
color: #e2e8f0;
}
.container {
width: 95vw;
max-width: 1000px;
aspect-ratio: 16 / 9;
background: linear-gradient(to bottom, #87CEEB 0%, #FFE4B5 65%, #FFA07A 85%, #F4A460 100%);
border-radius: 20px;
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.6), 0 0 0 1px rgba(255, 255, 255, 0.1);
position: relative;
overflow: hidden;
}
svg {
width: 100%;
height: 100%;
display: block;
}
.title-bar {
margin-top: 16px;
display: flex;
gap: 12px;
align-items: center;
font-size: 14px;
color: #94a3b8;
}
.badge {
background: rgba(255, 255, 255, 0.1);
padding: 4px 12px;
border-radius: 999px;
border: 1px solid rgba(255, 255, 255, 0.15);
font-weight: 500;
letter-spacing: 0.5px;
}
/* ================= 动画样式定义 ================= */
/* 太阳微光晕动 */
.sun-glow {
animation: sunPulse 4s ease-in-out infinite alternate;
transform-origin: 820px 110px;
}
@keyframes sunPulse {
0% { r: 52px; opacity: 0.45; }
100% { r: 68px; opacity: 0.25; }
}
/* 远景云朵飘动 */
.cloud-slow {
animation: cloudDrift 28s linear infinite;
}
.cloud-fast {
animation: cloudDrift 18s linear infinite;
}
@keyframes cloudDrift {
0% { transform: translateX(0); }
100% { transform: translateX(-1100px); }
}
/* 海浪层叠起伏 */
.sea-wave {
animation: waveFloat 3s ease-in-out infinite alternate;
}
@keyframes waveFloat {
0% { transform: translateY(0px); }
100% { transform: translateY(4px); }
}
/* 路面虚线流动 */
.road-stripes {
animation: roadMove 0.55s linear infinite;
}
@keyframes roadMove {
0% { transform: translateX(0); }
100% { transform: translateX(-160px); }
}
/* 路边护栏柱倒退 */
.fence-posts {
animation: fenceMove 1.1s linear infinite;
}
@keyframes fenceMove {
0% { transform: translateX(0); }
100% { transform: translateX(-320px); }
}
/* 车轮高速旋转 */
.wheel-rotate {
animation: spin 0.8s linear infinite;
transform-box: fill-box;
transform-origin: center center;
}
@keyframes spin {
100% { transform: rotate(360deg); }
}
/* 整个自行车与骑手颠簸 */
.bike-rider-unit {
animation: bikeJiggle 0.4s ease-in-out infinite alternate;
transform-origin: 500px 420px;
}
@keyframes bikeJiggle {
0% { transform: translateY(0px) rotate(0deg); }
50% { transform: translateY(-3px) rotate(0.4deg); }
100% { transform: translateY(1.5px) rotate(-0.3deg); }
}
/* 鹈鹕躯干呼吸式起伏与踩踏发力 */
.pelican-torso {
animation: riderBob 0.8s ease-in-out infinite;
transform-origin: 430px 310px;
}
@keyframes riderBob {
0%, 100% { transform: translateY(0px) rotate(0deg); }
25% { transform: translateY(-4px) rotate(-1deg); }
50% { transform: translateY(2px) rotate(0.8deg); }
75% { transform: translateY(-2px) rotate(-0.5deg); }
}
/* 鹈鹕头部微动 */
.pelican-head {
animation: headNod 0.8s ease-in-out infinite;
transform-origin: 540px 170px;
}
@keyframes headNod {
0%, 100% { transform: rotate(0deg); }
50% { transform: rotate(2.5deg) translateY(1px); }
}
/* 标志性大喉囊弹性摇曳 */
.pelican-pouch {
animation: pouchJiggle 0.8s ease-in-out infinite;
transform-origin: 590px 200px;
}
@keyframes pouchJiggle {
0%, 100% { transform: scale(1) rotate(0deg); }
35% { transform: scale(1.04, 0.96) rotate(-2deg); }
70% { transform: scale(0.97, 1.03) rotate(2deg); }
}
/* 围巾随风摆动飘扬 */
.scarf-tail {
animation: scarfFlutter 0.35s ease-in-out infinite alternate;
transform-origin: 505px 225px;
}
@keyframes scarfFlutter {
0% { transform: rotate(0deg) skewX(0deg) scaleY(1); }
100% { transform: rotate(-8deg) skewX(-10deg) scaleY(0.9); }
}
/* 齿轮曲柄旋转系统 */
.crank-rotate {
animation: spin 0.8s linear infinite;
transform-origin: 470px 425px;
}
/* 远侧齿轮曲柄反相位180度 */
.crank-rotate-back {
animation: spinBack 0.8s linear infinite;
transform-origin: 470px 425px;
}
@keyframes spinBack {
0% { transform: rotate(180deg); }
100% { transform: rotate(540deg); }
}
/* 脚踏板自转保持水平 */
.pedal-counter {
animation: counterSpin 0.8s linear infinite;
transform-box: fill-box;
transform-origin: center center;
}
@keyframes counterSpin {
100% { transform: rotate(-360deg); }
}
/* 近侧腿蹬踏摆动 */
.front-leg-thigh {
animation: frontLegCycle 0.8s ease-in-out infinite;
transform-origin: 440px 325px;
}
@keyframes frontLegCycle {
0% { transform: rotate(0deg); }
25% { transform: rotate(18deg); }
50% { transform: rotate(6deg); }
75% { transform: rotate(-14deg); }
100% { transform: rotate(0deg); }
}
.front-leg-shin {
animation: frontShinCycle 0.8s ease-in-out infinite;
transform-origin: 460px 380px;
}
@keyframes frontShinCycle {
0% { transform: rotate(0deg); }
25% { transform: rotate(-24deg); }
50% { transform: rotate(8deg); }
75% { transform: rotate(26deg); }
100% { transform: rotate(0deg); }
}
/* 远侧腿蹬踏摆动(相位差180度) */
.back-leg-thigh {
animation: backLegCycle 0.8s ease-in-out infinite;
transform-origin: 435px 320px;
}
@keyframes backLegCycle {
0% { transform: rotate(6deg); }
25% { transform: rotate(-14deg); }
50% { transform: rotate(0deg); }
75% { transform: rotate(18deg); }
100% { transform: rotate(6deg); }
}
.back-leg-shin {
animation: backShinCycle 0.8s ease-in-out infinite;
transform-origin: 450px 375px;
}
@keyframes backShinCycle {
0% { transform: rotate(8deg); }
25% { transform: rotate(26deg); }
50% { transform: rotate(0deg); }
75% { transform: rotate(-24deg); }
100% { transform: rotate(8deg); }
}
/* 翅膀扶把微震动 */
.wing-arm {
animation: wingVibe 0.4s ease-in-out infinite alternate;
transform-origin: 470px 260px;
}
@keyframes wingVibe {
0% { transform: rotate(0deg); }
100% { transform: rotate(-1.5deg); }
}
/* 眨眼动画 */
.eye-blink {
animation: blink 4s infinite;
transform-origin: 546px 148px;
}
@keyframes blink {
0%, 96%, 100% { transform: scaleY(1); }
98% { transform: scaleY(0.1); }
}
/* 地面扬尘粒子 */
.dust-particle-1 {
animation: dustFly1 0.7s ease-out infinite;
}
.dust-particle-2 {
animation: dustFly2 0.9s ease-out infinite 0.25s;
}
.dust-particle-3 {
animation: dustFly1 0.8s ease-out infinite 0.5s;
}
@keyframes dustFly1 {
0% { opacity: 0.8; transform: translate(300px, 480px) scale(0.6); }
100% { opacity: 0; transform: translate(210px, 465px) scale(1.8); }
}
@keyframes dustFly2 {
0% { opacity: 0.7; transform: translate(295px, 483px) scale(0.5); }
100% { opacity: 0; transform: translate(190px, 455px) scale(2.2); }
}
/* 速度风线 */
.speed-line {
animation: speedLine 0.7s linear infinite;
}
@keyframes speedLine {
0% { transform: translateX(1100px); opacity: 0; }
20% { opacity: 0.6; }
80% { opacity: 0.6; }
100% { transform: translateX(-200px); opacity: 0; }
}
</style>
</head>
<body>
<div class="container">
<svg viewBox="0 0 1000 562.5" preserveAspectRatio="xMidYMid meet">
<defs>
<!-- 天空背景渐变 -->
<linearGradient id="skyGrad" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#4facfe" />
<stop offset="40%" stop-color="#00f2fe" />
<stop offset="65%" stop-color="#fbc2eb" />
<stop offset="85%" stop-color="#ffb199" />
<stop offset="100%" stop-color="#ff7e5f" />
</linearGradient>
<!-- 太阳渐变 -->
<radialGradient id="sunGrad" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#FFFDF0" />
<stop offset="60%" stop-color="#FFE066" />
<stop offset="100%" stop-color="#FFA940" stop-opacity="0.9" />
</radialGradient>
<!-- 海洋渐变 -->
<linearGradient id="oceanGrad" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#2b5876" />
<stop offset="50%" stop-color="#4e4376" />
<stop offset="100%" stop-color="#2c3e50" />
</linearGradient>
<!-- 公路渐变 -->
<linearGradient id="roadGrad" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#3d4451" />
<stop offset="30%" stop-color="#282c34" />
<stop offset="100%" stop-color="#1e222b" />
</linearGradient>
<!-- 自行车车架金属质感渐变 -->
<linearGradient id="frameGrad" x1="0" y1="0" x2="1" y2="1">
<stop offset="0%" stop-color="#00c6ff" />
<stop offset="50%" stop-color="#0072ff" />
<stop offset="100%" stop-color="#004e92" />
</linearGradient>
<!-- 鹈鹕嘴喙渐变 -->
<linearGradient id="beakGrad" x1="0" y1="0" x2="1" y2="0.3">
<stop offset="0%" stop-color="#FFA726" />
<stop offset="50%" stop-color="#FB8C00" />
<stop offset="100%" stop-color="#EF6C00" />
</linearGradient>
<!-- 鹈鹕标志性喉囊渐变 -->
<linearGradient id="pouchGrad" x1="0" y1="0" x2="0.8" y2="1">
<stop offset="0%" stop-color="#FFCC80" stop-opacity="0.95" />
<stop offset="50%" stop-color="#FFA726" stop-opacity="0.9" />
<stop offset="100%" stop-color="#F57C00" stop-opacity="0.95" />
</linearGradient>
<!-- 鹈鹕羽毛白灰渐变 -->
<linearGradient id="featherGrad" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#FFFFFF" />
<stop offset="70%" stop-color="#F1F5F9" />
<stop offset="100%" stop-color="#CBD5E1" />
</linearGradient>
<!-- 翅膀暗色羽梢渐变 -->
<linearGradient id="wingTipGrad" x1="0" y1="0" x2="1" y2="1">
<stop offset="0%" stop-color="#FFFFFF" />
<stop offset="60%" stop-color="#E2E8F0" />
<stop offset="100%" stop-color="#475569" />
</linearGradient>
<!-- 红色小围巾渐变 -->
<linearGradient id="scarfGrad" x1="0" y1="0" x2="1" y2="0.5">
<stop offset="0%" stop-color="#ff416c" />
<stop offset="100%" stop-color="#ff4b2b" />
</linearGradient>
<!-- 轮胎橡胶质感 -->
<radialGradient id="tireGrad" cx="50%" cy="50%" r="50%">
<stop offset="82%" stop-color="#2D3748" />
<stop offset="89%" stop-color="#1A202C" />
<stop offset="97%" stop-color="#4A5568" />
<stop offset="100%" stop-color="#171923" />
</radialGradient>
<!-- 轮辐条模板 (360度排列) -->
<g id="spokes-cluster">
<line x1="0" y1="-55" x2="0" y2="55" stroke="#CBD5E1" stroke-width="1.6" opacity="0.65" />
<line x1="-55" y1="0" x2="55" y2="0" stroke="#CBD5E1" stroke-width="1.6" opacity="0.65" />
<line x1="-38.8" y1="-38.8" x2="38.8" y2="38.8" stroke="#CBD5E1" stroke-width="1.6" opacity="0.65" />
<line x1="38.8" y1="-38.8" x2="-38.8" y2="38.8" stroke="#CBD5E1" stroke-width="1.6" opacity="0.65" />
<line x1="-50.8" y1="-21" x2="50.8" y2="21" stroke="#CBD5E1" stroke-width="1.4" opacity="0.5" />
<line x1="-21" y1="-50.8" x2="21" y2="50.8" stroke="#CBD5E1" stroke-width="1.4" opacity="0.5" />
<line x1="50.8" y1="-21" x2="-50.8" y2="21" stroke="#CBD5E1" stroke-width="1.4" opacity="0.5" />
<line x1="21" y1="-50.8" x2="-21" y2="50.8" stroke="#CBD5E1" stroke-width="1.4" opacity="0.5" />
</g>
<!-- 完整车轮组件 -->
<g id="bicycle-wheel">
<!-- 外胎与车圈 -->
<circle cx="0" cy="0" r="56" fill="url(#tireGrad)" />
<circle cx="0" cy="0" r="48" fill="none" stroke="#718096" stroke-width="3.5" />
<circle cx="0" cy="0" r="46" fill="#F8FAFC" opacity="0.12" />
<!-- 旋转辐条 -->
<use href="#spokes-cluster" class="wheel-rotate" />
<!-- 轴心花鼓 -->
<circle cx="0" cy="0" r="9" fill="#CBD5E0" stroke="#4A5568" stroke-width="2" />
<circle cx="0" cy="0" r="4" fill="#2D3748" />
<!-- 轮胎反光高光弧线 -->
<path d="M -38 -36 A 53 53 0 0 1 38 -36" fill="none" stroke="#FFF" stroke-width="2.5" opacity="0.35" stroke-linecap="round" />
</g>
<!-- 云朵图形模版 -->
<g id="cloud-shape">
<path d="M 0 35 Q 15 15 45 22 Q 65 0 95 12 Q 130 -5 155 20 Q 185 22 195 40 Q 205 58 185 68 Q 170 78 135 75 Q 100 78 70 75 Q 35 78 15 65 Q -5 55 0 35 Z" fill="#FFFFFF" opacity="0.75" />
</g>
</defs>
<!-- 1. 天空背景 -->
<rect width="1000" height="562.5" fill="url(#skyGrad)" />
<!-- 2. 远方日出 / 太阳 -->
<circle cx="820" cy="115" r="58" fill="#FFE58F" opacity="0.3" class="sun-glow" />
<circle cx="820" cy="115" r="42" fill="url(#sunGrad)" filter="drop-shadow(0 0 16px rgba(255,170,0,0.8))" />
<!-- 3. 漂浮流云 (多组视差滚动) -->
<g>
<g class="cloud-slow">
<use href="#cloud-shape" x="150" y="45" transform="scale(0.85)" />
<use href="#cloud-shape" x="650" y="80" transform="scale(0.65)" />
<use href="#cloud-shape" x="1250" y="45" transform="scale(0.85)" />
<use href="#cloud-shape" x="1750" y="80" transform="scale(0.65)" />
</g>
<g class="cloud-fast">
<use href="#cloud-shape" x="380" y="115" transform="scale(0.5)" opacity="0.6" />
<use href="#cloud-shape" x="900" y="70" transform="scale(0.7)" opacity="0.6" />
<use href="#cloud-shape" x="1480" y="115" transform="scale(0.5)" opacity="0.6" />
<use href="#cloud-shape" x="2000" y="70" transform="scale(0.7)" opacity="0.6" />
</g>
</g>
<!-- 4. 远景海面与波光 -->
<path d="M 0 330 Q 250 326 500 330 T 1000 330 L 1000 405 L 0 405 Z" fill="url(#oceanGrad)" />
<!-- 海面微波 -->
<g fill="none" stroke="#90cdf4" stroke-width="1.8" opacity="0.5" class="sea-wave">
<path d="M 80 345 Q 110 341 140 345 M 220 355 Q 260 351 300 355 M 420 340 Q 455 337 490 340 M 670 350 Q 720 345 770 350 M 850 342 Q 880 339 910 342" />
<path d="M 30 365 Q 70 360 110 365 M 340 372 Q 390 367 440 372 M 560 364 Q 610 359 660 364 M 790 370 Q 830 366 870 370" stroke="#fbd38d" opacity="0.6" />
</g>
<!-- 远景灯塔与椰树剪影 -->
<g opacity="0.65">
<!-- 灯塔 -->
<polygon points="915,330 925,330 922,260 918,260" fill="#2d3748" />
<rect x="916" y="253" width="8" height="7" fill="#ecc94b" />
<polygon points="914,253 926,253 920,244" fill="#e53e3e" />
<!-- 海滨椰子树 -->
<path d="M 70 332 Q 85 295 105 270" stroke="#2d3748" stroke-width="5" fill="none" stroke-linecap="round" />
<path d="M 105 270 Q 70 260 55 275 M 105 270 Q 95 245 80 248 M 105 270 Q 130 248 135 255 M 105 270 Q 140 270 145 285 M 105 270 Q 115 288 100 295" stroke="#2d3748" stroke-width="3" fill="none" stroke-linecap="round" />
</g>
<!-- 5. 沿海护栏与路堤 -->
<rect x="0" y="392" width="1000" height="24" fill="#a0aec0" />
<line x1="0" y1="395" x2="1000" y2="395" stroke="#edf2f7" stroke-width="3" />
<line x1="0" y1="406" x2="1000" y2="406" stroke="#4a5568" stroke-width="3" />
<!-- 护栏立柱连续运动 -->
<g class="fence-posts" stroke="#718096" stroke-width="6" stroke-linecap="round">
<line x1="40" y1="392" x2="40" y2="416" /><line x1="120" y1="392" x2="120" y2="416" />
<line x1="200" y1="392" x2="200" y2="416" /><line x1="280" y1="392" x2="280" y2="416" />
<line x1="360" y1="392" x2="360" y2="416" /><line x1="440" y1="392" x2="440" y2="416" />
<line x1="520" y1="392" x2="520" y2="416" /><line x1="600" y1="392" x2="600" y2="416" />
<line x1="680" y1="392" x2="680" y2="416" /><line x1="760" y1="392" x2="760" y2="416" />
<line x1="840" y1="392" x2="840" y2="416" /><line x1="920" y1="392" x2="920" y2="416" />
<line x1="1000" y1="392" x2="1000" y2="416" /><line x1="1080" y1="392" x2="1080" y2="416" />
<line x1="1160" y1="392" x2="1160" y2="416" /><line x1="1240" y1="392" x2="1240" y2="416" />
<line x1="1320" y1="392" x2="1320" y2="416" />
</g>
<!-- 6. 公路路面 -->
<rect x="0" y="416" width="1000" height="146.5" fill="url(#roadGrad)" />
<!-- 路肩黄警示线 -->
<line x1="0" y1="422" x2="1000" y2="422" stroke="#ECC94B" stroke-width="4" opacity="0.9" />
<!-- 路中白色虚线(快速向左滚动的标线) -->
<g class="road-stripes">
<line x1="0" y1="500" x2="90" y2="500" stroke="#FFFFFF" stroke-width="8" stroke-linecap="round" opacity="0.85" />
<line x1="160" y1="500" x2="250" y2="500" stroke="#FFFFFF" stroke-width="8" stroke-linecap="round" opacity="0.85" />
<line x1="320" y1="500" x2="410" y2="500" stroke="#FFFFFF" stroke-width="8" stroke-linecap="round" opacity="0.85" />
<line x1="480" y1="500" x2="570" y2="500" stroke="#FFFFFF" stroke-width="8" stroke-linecap="round" opacity="0.85" />
<line x1="640" y1="500" x2="730" y2="500" stroke="#FFFFFF" stroke-width="8" stroke-linecap="round" opacity="0.85" />
<line x1="800" y1="500" x2="890" y2="500" stroke="#FFFFFF" stroke-width="8" stroke-linecap="round" opacity="0.85" />
<line x1="960" y1="500" x2="1050" y2="500" stroke="#FFFFFF" stroke-width="8" stroke-linecap="round" opacity="0.85" />
<line x1="1120" y1="500" x2="1210" y2="500" stroke="#FFFFFF" stroke-width="8" stroke-linecap="round" opacity="0.85" />
</g>
<!-- 7. 速度风线 -->
<g stroke="#FFFFFF" stroke-width="2" stroke-linecap="round">
<line x1="0" y1="180" x2="160" y2="180" class="speed-line" style="animation-duration: 0.5s; animation-delay: 0.1s;" />
<line x1="0" y1="230" x2="110" y2="230" class="speed-line" style="animation-duration: 0.7s; animation-delay: 0.3s;" />
<line x1="0" y1="360" x2="140" y2="360" class="speed-line" style="animation-duration: 0.6s; animation-delay: 0.2s;" />
</g>
<!-- 8. 地面扬尘粒子 -->
<g fill="#A0AEC0">
<circle cx="0" cy="0" r="4" class="dust-particle-1" />
<circle cx="0" cy="0" r="6" class="dust-particle-2" />
<circle cx="0" cy="0" r="3" class="dust-particle-3" />
</g>
<!-- 9. 自行车在路面投射的动态阴影 -->
<ellipse cx="485" cy="482" rx="190" ry="12" fill="#0b0e14" opacity="0.45">
<animate attributeName="rx" values="185;195;185" dur="0.4s" repeatCount="indefinite" />
</ellipse>
<!-- ================= 核心主体:鹈鹕与自行车单元 ================= -->
<g class="bike-rider-unit">
<!-- 远侧车轮 (后轮与前轮) -->
<!-- 后轮 (轴心: 330, 425) -->
<g transform="translate(330, 425)">
<use href="#bicycle-wheel" />
</g>
<!-- 前轮 (轴心: 640, 425) -->
<g transform="translate(640, 425)">
<use href="#bicycle-wheel" />
</g>
<!-- 远侧后踏板与远侧腿 (在车架之后) -->
<g>
<!-- 远侧曲柄与踏板 (反相位180度) -->
<g class="crank-rotate-back">
<line x1="470" y1="425" x2="470" y2="455" stroke="#718096" stroke-width="5" stroke-linecap="round" />
<g transform="translate(470, 455)">
<rect x="-12" y="-4" width="24" height="8" rx="3" fill="#2D3748" stroke="#A0AEC0" stroke-width="1.5" class="pedal-counter" />
</g>
</g>
<!-- 远侧大腿与小腿 -->
<g class="back-leg-thigh" opacity="0.85">
<!-- 股部 -->
<path d="M 430 320 Q 445 350 450 375" stroke="#E2E8F0" stroke-width="18" stroke-linecap="round" />
<g class="back-leg-shin">
<!-- 橙黄色小腿骨 -->
<line x1="450" y1="375" x2="465" y2="445" stroke="#ED8936" stroke-width="8" stroke-linecap="round" />
<!-- 远侧大脚蹼踩在踏板上 -->
<path d="M 452 443 L 485 448 L 478 456 L 450 452 Z" fill="#DD6B20" />
</g>
</g>
</g>
<!-- 自行车车架系统 (前卫运动天蓝色涂装) -->
<g>
<!-- 后平叉 (后轮轴 330,425 -> 中轴 470,425) -->
<line x1="330" y1="425" x2="470" y2="425" stroke="url(#frameGrad)" stroke-width="9" stroke-linecap="round" />
<!-- 后上叉 (后轮轴 330,425 -> 座管夹 420,335) -->
<line x1="330" y1="425" x2="420" y2="335" stroke="url(#frameGrad)" stroke-width="8" stroke-linecap="round" />
<!-- 立管 (中轴 470,425 -> 座管夹 420,335) -->
<line x1="470" y1="425" x2="420" y2="335" stroke="url(#frameGrad)" stroke-width="9" stroke-linecap="round" />
<!-- 下管 (中轴 470,425 -> 车头头管 575,305) -->
<line x1="470" y1="425" x2="575" y2="305" stroke="url(#frameGrad)" stroke-width="11" stroke-linecap="round" />
<!-- 上管 (座管夹 420,335 -> 车头头管 570,270) -->
<line x1="420" y1="335" x2="570" y2="270" stroke="url(#frameGrad)" stroke-width="9" stroke-linecap="round" />
<!-- 前叉与头管延伸至前轮轴 (570,260 -> 578,310 -> 640,425) -->
<line x1="570" y1="260" x2="578" y2="310" stroke="url(#frameGrad)" stroke-width="10" stroke-linecap="round" />
<line x1="578" y1="310" x2="640" y2="425" stroke="#00c6ff" stroke-width="8" stroke-linecap="round" />
<!-- 镀铬车座管与运动鞍座 -->
<line x1="420" y1="335" x2="412" y2="310" stroke="#CBD5E1" stroke-width="6" stroke-linecap="round" />
<!-- 鞍座 (流线型舒适车座) -->
<path d="M 385 312 C 390 306 430 306 442 316 C 430 322 400 320 385 312 Z" fill="#1A202C" stroke="#4A5568" stroke-width="2" />
<!-- 牙盘大齿轮与金色链条 -->
<circle cx="470" cy="425" r="26" fill="#4A5568" stroke="#CBD5E0" stroke-width="2" />
<!-- 镂空盘齿 -->
<circle cx="470" cy="425" r="14" fill="#2D3748" />
<circle cx="470" cy="413" r="3.5" fill="#CBD5E1" />
<circle cx="470" cy="437" r="3.5" fill="#CBD5E1" />
<circle cx="458" cy="425" r="3.5" fill="#CBD5E1" />
<circle cx="482" cy="425" r="3.5" fill="#CBD5E1" />
<!-- 链条 -->
<path d="M 330 417 L 470 401 A 24 24 0 0 1 470 449 L 330 433 A 8 8 0 0 1 330 417 Z" fill="none" stroke="#ECC94B" stroke-width="3.5" stroke-dasharray="6,3" opacity="0.9" />
<!-- 车把立管与弯把龙头 (570,260 向上延伸) -->
<path d="M 570 260 L 575 230 L 595 230 Q 610 230 610 248 Q 610 260 598 260" fill="none" stroke="#E2E8F0" stroke-width="6" stroke-linecap="round" />
<!-- 车把软质握把套 -->
<line x1="590" y1="230" x2="605" y2="230" stroke="#E53E3E" stroke-width="8" stroke-linecap="round" />
<!-- 车头复古金属铃铛 -->
<circle cx="582" cy="223" r="6" fill="#F6E05E" stroke="#D69E2E" stroke-width="1.5" />
</g>
<!-- 近侧后轮挡泥板 (弧形挡泥板增加经典复古感) -->
<path d="M 285 410 A 62 62 0 0 1 365 375" fill="none" stroke="#0072ff" stroke-width="5" stroke-linecap="round" opacity="0.8" />
<!-- ================= 鹈鹕骑手全套 ================= -->
<g id="pelican-character">
<!-- 尾羽 (俏皮翘起) -->
<g class="pelican-torso">
<path d="M 390 305 Q 355 295 340 310 Q 358 322 385 322 Z" fill="#E2E8F0" stroke="#CBD5E1" stroke-width="1.5" />
<path d="M 388 312 Q 350 310 338 326 Q 365 332 390 326 Z" fill="#94A3B8" />
</g>
<!-- 鹈鹕饱满圆润的身体躯干 -->
<g class="pelican-torso">
<!-- 躯干底色与羽翼丰润感 -->
<path d="M 405 320 C 390 280 425 235 480 230 C 510 228 535 250 535 285 C 535 325 480 345 425 340 Z" fill="url(#featherGrad)" filter="drop-shadow(0 4px 6px rgba(0,0,0,0.15))" />
<!-- 胸腹腹羽绒层次 -->
<path d="M 450 240 C 490 245 520 270 515 315 C 480 335 440 330 430 322 C 455 310 470 280 450 240 Z" fill="#FFFFFF" opacity="0.9" />
<!-- 脖颈向上自然过渡至头部 -->
<path d="M 485 240 C 492 210 508 185 530 170 L 555 185 C 535 205 520 230 515 255 Z" fill="url(#featherGrad)" />
<!-- 鹈鹕头部组件 -->
<g class="pelican-head">
<!-- 后脑勺羽冠 (略带炸毛可爱的几根呆毛) -->
<path d="M 522 145 Q 502 140 495 148 Q 512 154 524 153" fill="#CBD5E1" />
<path d="M 520 138 Q 498 128 490 135 Q 510 142 522 144" fill="#FFFFFF" />
<!-- 头颅主体 (圆润饱满) -->
<ellipse cx="542" cy="150" rx="26" ry="24" fill="url(#featherGrad)" />
<!-- 红色时尚骑行小软帽 (增添趣味感与拟人化性格) -->
<g>
<path d="M 522 140 C 522 120 558 115 565 135 Z" fill="#E53E3E" stroke="#C53030" stroke-width="1.5" />
<!-- 帽子帽檐向前挑出 -->
<path d="M 552 135 Q 582 136 590 142 Q 570 143 555 140 Z" fill="#9B2C2C" />
<circle cx="545" cy="120" r="4.5" fill="#ECC94B" />
</g>
<!-- 帅气护风镜挂在帽檐上 -->
<g opacity="0.95">
<rect x="532" y="128" width="18" height="11" rx="4" fill="#63B3ED" stroke="#2B6CB0" stroke-width="1.5" />
<line x1="535" y1="131" x2="544" y2="136" stroke="#FFFFFF" stroke-width="1.5" stroke-linecap="round" />
<line x1="524" y1="133" x2="532" y2="133" stroke="#2D3748" stroke-width="2.5" />
</g>
<!-- 呆萌灵动的大眼睛 -->
<g class="eye-blink">
<!-- 眼眶浅黄圈 -->
<circle cx="552" cy="147" r="8.5" fill="#FEFCBF" />
<!-- 黑色瞳仁 -->
<circle cx="554" cy="147" r="5" fill="#1A202C" />
<!-- 炯炯有神的高光两点 -->
<circle cx="556" cy="145" r="2" fill="#FFFFFF" />
<circle cx="552" cy="149" r="0.9" fill="#FFFFFF" />
</g>
<!-- ================= 鹈鹕灵魂所在:超大长喙与大喉囊 ================= -->
<!-- 上喙 (长而坚挺,末端带标志性向下的利钩) -->
<path d="M 555 148 L 685 168 Q 698 171 694 178 Q 688 184 680 180 L 562 165 Z" fill="url(#beakGrad)" stroke="#DD6B20" stroke-width="1.5" />
<!-- 喙上侧纵向棱脊线与鼻孔 -->
<path d="M 562 153 L 680 171" stroke="#F6AD55" stroke-width="2" stroke-linecap="round" />
<ellipse cx="572" cy="155" rx="2" ry="1" fill="#7B341E" />
<!-- 喙尖钩子细节 -->
<path d="M 685 168 Q 698 172 695 180 Q 688 184 682 178 Z" fill="#C05621" />
<!-- 下喙骨架 (细长支撑) -->
<path d="M 565 165 L 680 180" stroke="#DD6B20" stroke-width="2.5" stroke-linecap="round" />
<!-- 经典巨大弹性喉囊 (弹动动画,微透明质感,兜着满足与快乐) -->
<g class="pelican-pouch">
<path d="M 565 165 Q 615 174 680 180 C 665 215 620 232 580 215 C 555 204 550 182 565 165 Z" fill="url(#pouchGrad)" stroke="#EA580C" stroke-width="2" />
<!-- 喉囊上的微细血管/肌肉纹理质感 -->
<path d="M 590 180 Q 615 198 640 190" fill="none" stroke="#FDBA74" stroke-width="1.2" opacity="0.6" />
<path d="M 575 185 Q 598 206 620 205" fill="none" stroke="#FDBA74" stroke-width="1.2" opacity="0.6" />
<circle cx="630" cy="195" r="1.5" fill="#FFEDD5" opacity="0.8" />
</g>
</g> <!-- end .pelican-head -->
<!-- 飘动保暖红围巾 (系在脖颈处,随风狂飙) -->
<g>
<!-- 脖套部分 -->
<path d="M 505 218 Q 530 212 548 228 Q 525 240 505 218 Z" fill="url(#scarfGrad)" stroke="#C53030" stroke-width="1" />
<!-- 随风向后飞扬的围巾飘带 -->
<g class="scarf-tail">
<path d="M 505 224 C 470 220 440 205 410 208 C 435 224 465 235 502 232 Z" fill="url(#scarfGrad)" />
<path d="M 504 228 C 465 230 435 215 400 222 C 430 238 465 245 498 235 Z" fill="#E53E3E" opacity="0.85" />
<!-- 流苏边缘 -->
<line x1="410" y1="208" x2="402" y2="210" stroke="#FEE2E2" stroke-width="2" />
<line x1="405" y1="215" x2="397" y2="218" stroke="#FEE2E2" stroke-width="2" />
<line x1="400" y1="222" x2="392" y2="225" stroke="#FEE2E2" stroke-width="2" />
</g>
</g>
<!-- 翅膀 (身体侧翼,大主翅延伸握持车把) -->
<g class="wing-arm">
<!-- 翅膀肩部与主翼面 -->
<path d="M 440 250 C 470 240 510 260 550 255 C 570 252 590 242 602 236 C 585 260 555 285 510 295 C 470 302 435 285 440 250 Z" fill="url(#wingTipGrad)" stroke="#CBD5E1" stroke-width="1.5" filter="drop-shadow(0 2px 4px rgba(0,0,0,0.1))" />
<!-- 初级飞羽层次纹路 -->
<path d="M 465 265 Q 510 272 555 262" stroke="#94A3B8" stroke-width="2" fill="none" />
<path d="M 480 280 Q 525 282 565 265" stroke="#64748B" stroke-width="2" fill="none" />
<!-- 翅梢似手指握住车把手 (把手坐标在 595,230) -->
<path d="M 592 232 Q 606 230 608 240 Q 598 248 588 242 Z" fill="#475569" />
<path d="M 598 234 Q 612 234 612 244 Q 602 250 594 244 Z" fill="#334155" />
</g>
</g> <!-- end .pelican-torso -->
<!-- ================= 近侧腿部踩踏系统 (完全联动的曲柄与脚蹼) ================= -->
<g>
<!-- 近侧齿轮曲柄与踏板 (中心 470, 425,旋转带动) -->
<g class="crank-rotate">
<line x1="470" y1="425" x2="470" y2="455" stroke="#CBD5E0" stroke-width="7" stroke-linecap="round" />
<circle cx="470" cy="425" r="6" fill="#1A202C" />
<!-- 近侧脚踏板 (自身反向旋转维持水平) -->
<g transform="translate(470, 455)">
<rect x="-14" y="-5" width="28" height="10" rx="3" fill="#1A202C" stroke="#E2E8F0" stroke-width="2" class="pedal-counter" />
<line x1="-10" y1="0" x2="10" y2="0" stroke="#ECC94B" stroke-width="2" class="pedal-counter" />
</g>
</g>
<!-- 近侧大腿与小腿 (动画精准踩踏) -->
<g class="front-leg-thigh">
<!-- 大腿丰厚白羽根部 -->
<path d="M 432 320 C 445 348 460 365 460 380 C 445 380 425 350 420 330 Z" fill="#FFFFFF" stroke="#E2E8F0" stroke-width="1.5" />
<ellipse cx="442" cy="348" rx="16" ry="24" fill="url(#featherGrad)" />
<!-- 膝关节向下的小腿与脚蹼 -->
<g class="front-leg-shin">
<!-- 结实有力的金橙色胫骨 -->
<line x1="460" y1="380" x2="470" y2="445" stroke="#F6AD55" stroke-width="9" stroke-linecap="round" />
<line x1="461" y1="380" x2="471" y2="445" stroke="#DD6B20" stroke-width="5" stroke-linecap="round" />
<!-- 关节环纹 -->
<circle cx="460" cy="380" r="5.5" fill="#ED8936" />
<!-- 鹈鹕标志性大脚蹼 (三个蹼指踩住踏板) -->
<g>
<path d="M 456 442 L 496 446 C 494 454 485 458 474 457 L 452 452 Z" fill="#DD6B20" stroke="#C05621" stroke-width="1.5" />
<!-- 蹼间蹼膜高光与趾爪 -->
<polygon points="496,446 502,448 494,450" fill="#2D3748" />
<polygon points="488,452 494,455 486,456" fill="#2D3748" />
<path d="M 462 444 Q 482 449 494 447" stroke="#FBD38D" stroke-width="1.8" fill="none" />
</g>
</g>
</g>
</g>
</g> <!-- end #pelican-character -->
</g> <!-- end .bike-rider-unit -->
<!-- 前景掠影 (偶尔飞掠的气泡/光斑,增加画面层次景深) -->
<g opacity="0.4">
<circle cx="210" cy="180" r="8" fill="#FFFFFF" />
<circle cx="780" cy="220" r="5" fill="#FFFFFF" />
<circle cx="620" cy="120" r="11" fill="#FFFFFF" opacity="0.3" />
</g>
</svg>
</div>
<div class="title-bar">
<span class="badge">SVG 2D 矢量动画</span>
<span>🚴♂️ 迎风飞驰的鹈鹕绅士 (Pelican on a Bicycle)</span>
</div>
</body>
</html>