workflow.html 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>项目流程管控 - 映三色项目报告</title>
  7. <link href="https://cdn.bootcdn.net/ajax/libs/bootstrap/5.3.0/css/bootstrap.min.css" rel="stylesheet">
  8. <link href="https://cdn.bootcdn.net/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
  9. <link href="https://cdn.bootcdn.net/ajax/libs/animate.css/4.1.1/animate.min.css" rel="stylesheet">
  10. <style>
  11. :root {
  12. --primary-color: #00d4ff;
  13. --secondary-color: #0099cc;
  14. --dark-bg: #0a0a0a;
  15. --card-bg: #1a1a1a;
  16. --text-primary: #ffffff;
  17. --text-secondary: #cccccc;
  18. --success-color: #28a745;
  19. --warning-color: #ffc107;
  20. --danger-color: #dc3545;
  21. --info-color: #17a2b8;
  22. }
  23. body {
  24. background: var(--dark-bg);
  25. color: var(--text-primary);
  26. font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
  27. }
  28. .header {
  29. background: linear-gradient(135deg, #1a1a1a 0%, #2a2a2a 100%);
  30. padding: 20px 0;
  31. border-bottom: 2px solid var(--primary-color);
  32. }
  33. .breadcrumb {
  34. background: transparent;
  35. margin-bottom: 0;
  36. }
  37. .breadcrumb-item a {
  38. color: var(--primary-color);
  39. text-decoration: none;
  40. }
  41. .workflow-container {
  42. max-width: 1400px;
  43. margin: 0 auto;
  44. padding: 40px 20px;
  45. }
  46. .timeline {
  47. position: relative;
  48. margin: 40px 0;
  49. }
  50. .timeline::before {
  51. content: '';
  52. position: absolute;
  53. left: 50%;
  54. top: 0;
  55. bottom: 0;
  56. width: 4px;
  57. background: linear-gradient(to bottom, var(--primary-color), var(--secondary-color));
  58. transform: translateX(-50%);
  59. }
  60. .timeline-item {
  61. position: relative;
  62. margin: 50px 0;
  63. opacity: 0;
  64. animation: fadeInUp 0.6s ease forwards;
  65. }
  66. .timeline-item:nth-child(odd) {
  67. text-align: right;
  68. padding-right: calc(50% + 30px);
  69. }
  70. .timeline-item:nth-child(even) {
  71. text-align: left;
  72. padding-left: calc(50% + 30px);
  73. }
  74. .timeline-node {
  75. position: absolute;
  76. left: 50%;
  77. top: 20px;
  78. width: 60px;
  79. height: 60px;
  80. background: var(--primary-color);
  81. border-radius: 50%;
  82. transform: translateX(-50%);
  83. display: flex;
  84. align-items: center;
  85. justify-content: center;
  86. font-size: 1.5rem;
  87. color: white;
  88. z-index: 2;
  89. box-shadow: 0 0 20px rgba(0, 212, 255, 0.5);
  90. }
  91. .timeline-content {
  92. background: rgba(26, 26, 26, 0.9);
  93. border-radius: 15px;
  94. padding: 30px;
  95. position: relative;
  96. border: 1px solid rgba(0, 212, 255, 0.3);
  97. transition: all 0.3s ease;
  98. }
  99. .timeline-content:hover {
  100. transform: translateY(-5px);
  101. box-shadow: 0 15px 30px rgba(0, 212, 255, 0.2);
  102. border-color: var(--primary-color);
  103. }
  104. .timeline-item:nth-child(odd) .timeline-content::after {
  105. content: '';
  106. position: absolute;
  107. right: -15px;
  108. top: 25px;
  109. width: 0;
  110. height: 0;
  111. border: 15px solid transparent;
  112. border-left-color: rgba(26, 26, 26, 0.9);
  113. }
  114. .timeline-item:nth-child(even) .timeline-content::after {
  115. content: '';
  116. position: absolute;
  117. left: -15px;
  118. top: 25px;
  119. width: 0;
  120. height: 0;
  121. border: 15px solid transparent;
  122. border-right-color: rgba(26, 26, 26, 0.9);
  123. }
  124. .phase-title {
  125. font-size: 1.8rem;
  126. font-weight: bold;
  127. color: var(--primary-color);
  128. margin-bottom: 15px;
  129. display: flex;
  130. align-items: center;
  131. }
  132. .phase-title i {
  133. margin-right: 10px;
  134. }
  135. .phase-description {
  136. color: var(--text-secondary);
  137. margin-bottom: 20px;
  138. line-height: 1.6;
  139. }
  140. .requirements-grid {
  141. display: grid;
  142. grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  143. gap: 15px;
  144. margin: 20px 0;
  145. }
  146. .requirement-item {
  147. background: rgba(0, 212, 255, 0.1);
  148. border-radius: 8px;
  149. padding: 15px;
  150. border-left: 4px solid var(--primary-color);
  151. }
  152. .requirement-title {
  153. font-weight: bold;
  154. color: var(--primary-color);
  155. margin-bottom: 8px;
  156. }
  157. .requirement-desc {
  158. color: var(--text-secondary);
  159. font-size: 0.9rem;
  160. }
  161. .evaluation-criteria {
  162. background: rgba(40, 167, 69, 0.1);
  163. border-radius: 10px;
  164. padding: 20px;
  165. margin: 20px 0;
  166. border: 1px solid var(--success-color);
  167. }
  168. .evaluation-title {
  169. color: var(--success-color);
  170. font-weight: bold;
  171. margin-bottom: 10px;
  172. display: flex;
  173. align-items: center;
  174. }
  175. .evaluation-title i {
  176. margin-right: 8px;
  177. }
  178. .criteria-list {
  179. list-style: none;
  180. padding: 0;
  181. }
  182. .criteria-list li {
  183. padding: 5px 0;
  184. color: var(--text-secondary);
  185. position: relative;
  186. padding-left: 20px;
  187. }
  188. .criteria-list li::before {
  189. content: '✓';
  190. position: absolute;
  191. left: 0;
  192. color: var(--success-color);
  193. font-weight: bold;
  194. }
  195. .process-flow {
  196. background: rgba(26, 26, 26, 0.8);
  197. border-radius: 15px;
  198. padding: 30px;
  199. margin: 30px 0;
  200. border: 1px solid rgba(0, 212, 255, 0.3);
  201. }
  202. .flow-steps {
  203. display: flex;
  204. justify-content: space-between;
  205. align-items: center;
  206. flex-wrap: wrap;
  207. gap: 20px;
  208. }
  209. .flow-step {
  210. flex: 1;
  211. min-width: 200px;
  212. text-align: center;
  213. position: relative;
  214. }
  215. .flow-step:not(:last-child)::after {
  216. content: '→';
  217. position: absolute;
  218. right: -20px;
  219. top: 50%;
  220. transform: translateY(-50%);
  221. color: var(--primary-color);
  222. font-size: 1.5rem;
  223. font-weight: bold;
  224. }
  225. .step-icon {
  226. width: 80px;
  227. height: 80px;
  228. background: var(--primary-color);
  229. border-radius: 50%;
  230. display: flex;
  231. align-items: center;
  232. justify-content: center;
  233. margin: 0 auto 15px;
  234. font-size: 2rem;
  235. color: white;
  236. }
  237. .step-title {
  238. font-weight: bold;
  239. margin-bottom: 10px;
  240. color: var(--primary-color);
  241. }
  242. .step-desc {
  243. color: var(--text-secondary);
  244. font-size: 0.9rem;
  245. }
  246. .faq-section {
  247. background: rgba(220, 53, 69, 0.1);
  248. border-radius: 15px;
  249. padding: 30px;
  250. margin: 40px 0;
  251. border: 1px solid var(--danger-color);
  252. }
  253. .faq-title {
  254. color: var(--danger-color);
  255. font-size: 1.5rem;
  256. font-weight: bold;
  257. margin-bottom: 20px;
  258. display: flex;
  259. align-items: center;
  260. }
  261. .faq-title i {
  262. margin-right: 10px;
  263. }
  264. .back-btn {
  265. background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  266. border: none;
  267. color: white;
  268. padding: 10px 20px;
  269. border-radius: 25px;
  270. text-decoration: none;
  271. display: inline-flex;
  272. align-items: center;
  273. transition: all 0.3s ease;
  274. }
  275. .back-btn:hover {
  276. transform: translateY(-2px);
  277. box-shadow: 0 5px 15px rgba(102, 126, 234, 0.4);
  278. color: white;
  279. }
  280. @keyframes fadeInUp {
  281. from {
  282. opacity: 0;
  283. transform: translateY(30px);
  284. }
  285. to {
  286. opacity: 1;
  287. transform: translateY(0);
  288. }
  289. }
  290. @media (max-width: 768px) {
  291. .timeline::before {
  292. left: 30px;
  293. }
  294. .timeline-item {
  295. text-align: left !important;
  296. padding-left: 60px !important;
  297. padding-right: 0 !important;
  298. }
  299. .timeline-node {
  300. left: 30px !important;
  301. transform: none !important;
  302. }
  303. .timeline-content::after {
  304. display: none;
  305. }
  306. .flow-steps {
  307. flex-direction: column;
  308. }
  309. .flow-step:not(:last-child)::after {
  310. content: '↓';
  311. position: static;
  312. margin: 10px 0;
  313. }
  314. }
  315. </style>
  316. </head>
  317. <body>
  318. <header class="header">
  319. <div class="container">
  320. <nav class="breadcrumb">
  321. <a class="breadcrumb-item" href="index.html">
  322. <i class="fas fa-home me-2"></i>首页
  323. </a>
  324. <span class="breadcrumb-item active">项目流程管控</span>
  325. </nav>
  326. <div class="d-flex justify-content-between align-items-center mt-3">
  327. <h1 class="mb-0">
  328. <i class="fas fa-project-diagram me-2"></i>项目流程管控
  329. </h1>
  330. <a href="index.html" class="back-btn">
  331. <i class="fas fa-arrow-left me-2"></i>返回首页
  332. </a>
  333. </div>
  334. </div>
  335. </header>
  336. <div class="workflow-container">
  337. <!-- 流程概览 -->
  338. <div class="process-flow animate__animated animate__fadeIn">
  339. <h2 class="text-center mb-4">
  340. <i class="fas fa-sitemap me-2"></i>项目流程概览
  341. </h2>
  342. <div class="flow-steps">
  343. <div class="flow-step">
  344. <div class="step-icon"><i class="fas fa-comments"></i></div>
  345. <div class="step-title">需求沟通</div>
  346. <div class="step-desc">客户需求收集与确认</div>
  347. </div>
  348. <div class="flow-step">
  349. <div class="step-icon"><i class="fas fa-cogs"></i></div>
  350. <div class="step-title">项目执行</div>
  351. <div class="step-desc">建模→软装→渲染→大图</div>
  352. </div>
  353. <div class="flow-step">
  354. <div class="step-icon"><i class="fas fa-check-circle"></i></div>
  355. <div class="step-title">项目收尾</div>
  356. <div class="step-desc">后期处理与交付</div>
  357. </div>
  358. </div>
  359. </div>
  360. <!-- 详细流程时间线 -->
  361. <div class="timeline">
  362. <!-- 需求沟通阶段 -->
  363. <div class="timeline-item" style="animation-delay: 0.2s;">
  364. <div class="timeline-node">
  365. <i class="fas fa-comments"></i>
  366. </div>
  367. <div class="timeline-content">
  368. <div class="phase-title">
  369. <i class="fas fa-handshake"></i>需求沟通阶段
  370. </div>
  371. <div class="phase-description">
  372. 客户通过客服下单,收集和确认项目基础信息和扩展需求,建立项目群进行详细沟通。
  373. </div>
  374. <div class="requirements-grid">
  375. <div class="requirement-item">
  376. <div class="requirement-title">必备基础信息</div>
  377. <div class="requirement-desc">
  378. • 平面图<br>
  379. • 立面/天花图<br>
  380. • 参考图<br>
  381. • 作图标准<br>
  382. • 高端图/中端图<br>
  383. • 小图时间<br>
  384. • 风格要求
  385. </div>
  386. </div>
  387. <div class="requirement-item">
  388. <div class="requirement-title">扩展需求补充</div>
  389. <div class="requirement-desc">
  390. • 大图时间<br>
  391. • 软装色彩参考图<br>
  392. • CAD立面/天花<br>
  393. • 细节形状与结构<br>
  394. • 氛围需求说明
  395. </div>
  396. </div>
  397. </div>
  398. <div class="evaluation-criteria">
  399. <div class="evaluation-title">
  400. <i class="fas fa-clipboard-check"></i>评价维度
  401. </div>
  402. <ul class="criteria-list">
  403. <li>信息完整性:必备信息是否齐全</li>
  404. <li>需求清晰度:客户需求是否明确表达</li>
  405. <li>可执行性:需求是否具备技术可行性</li>
  406. <li>时间合理性:交付时间是否现实可达</li>
  407. </ul>
  408. </div>
  409. </div>
  410. </div>
  411. <!-- 建模阶段 -->
  412. <div class="timeline-item" style="animation-delay: 0.4s;">
  413. <div class="timeline-node">
  414. <i class="fas fa-cube"></i>
  415. </div>
  416. <div class="timeline-content">
  417. <div class="phase-title">
  418. <i class="fas fa-drafting-compass"></i>建模阶段
  419. </div>
  420. <div class="phase-description">
  421. 创建硬装模型,建立空间结构和基础造型,为后续软装和渲染奠定基础。
  422. </div>
  423. <div class="requirements-grid">
  424. <div class="requirement-item">
  425. <div class="requirement-title">建模要求</div>
  426. <div class="requirement-desc">
  427. • 按照CAD图纸建立精确模型<br>
  428. • 确保空间比例准确<br>
  429. • 建立基础材质框架<br>
  430. • 优化模型结构和面数
  431. </div>
  432. </div>
  433. <div class="requirement-item">
  434. <div class="requirement-title">客户确认</div>
  435. <div class="requirement-desc">
  436. • 发送模型截图给客户<br>
  437. • 专业客户:需要深化确认<br>
  438. • 非专业客户:建议跳过确认<br>
  439. • 避免增加不必要的修改
  440. </div>
  441. </div>
  442. </div>
  443. <div class="evaluation-criteria">
  444. <div class="evaluation-title">
  445. <i class="fas fa-clipboard-check"></i>评价维度
  446. </div>
  447. <ul class="criteria-list">
  448. <li>空间准确性:尺寸和比例是否符合CAD</li>
  449. <li>结构完整性:造型和结构是否合理</li>
  450. <li>形状准确性:细节形状是否到位</li>
  451. <li>优化程度:模型是否便于后续处理</li>
  452. </ul>
  453. </div>
  454. </div>
  455. </div>
  456. <!-- 软装阶段 -->
  457. <div class="timeline-item" style="animation-delay: 0.6s;">
  458. <div class="timeline-node">
  459. <i class="fas fa-couch"></i>
  460. </div>
  461. <div class="timeline-content">
  462. <div class="phase-title">
  463. <i class="fas fa-palette"></i>软装阶段
  464. </div>
  465. <div class="phase-description">
  466. 在硬装模型基础上添加家具、装饰品等软装元素,形成完整的空间设计方案。
  467. </div>
  468. <div class="requirements-grid">
  469. <div class="requirement-item">
  470. <div class="requirement-title">软装布置</div>
  471. <div class="requirement-desc">
  472. • 添加家具和装饰品<br>
  473. • 确定整体色彩搭配<br>
  474. • 调整空间布局合理性<br>
  475. • 营造设计氛围
  476. </div>
  477. </div>
  478. <div class="requirement-item">
  479. <div class="requirement-title">截图确认</div>
  480. <div class="requirement-desc">
  481. • 发送软装框架截图<br>
  482. • 展示家具摆放效果<br>
  483. • 确认软装选品方向<br>
  484. • 调整客户反馈意见
  485. </div>
  486. </div>
  487. </div>
  488. <div class="evaluation-criteria">
  489. <div class="evaluation-title">
  490. <i class="fas fa-clipboard-check"></i>评价维度
  491. </div>
  492. <ul class="criteria-list">
  493. <li>搭配协调性:色彩和风格是否统一</li>
  494. <li>空间合理性:家具布局是否合理</li>
  495. <li>选品质量:家具和装饰品选择是否恰当</li>
  496. <li>氛围营造:是否达到预期设计效果</li>
  497. </ul>
  498. </div>
  499. </div>
  500. </div>
  501. <!-- 渲染阶段 -->
  502. <div class="timeline-item" style="animation-delay: 0.8s;">
  503. <div class="timeline-node">
  504. <i class="fas fa-image"></i>
  505. </div>
  506. <div class="timeline-content">
  507. <div class="phase-title">
  508. <i class="fas fa-lightbulb"></i>渲染阶段(小图)
  509. </div>
  510. <div class="phase-description">
  511. 制作带灯光效果的小图效果图,用于客户确认设计方案和细节调整。
  512. </div>
  513. <div class="requirements-grid">
  514. <div class="requirement-item">
  515. <div class="requirement-title">小图制作</div>
  516. <div class="requirement-desc">
  517. • 调整灯光和材质<br>
  518. • 每张渲染5-10分钟<br>
  519. • 通常需要制作10张左右<br>
  520. • 确保效果图质量
  521. </div>
  522. </div>
  523. <div class="requirement-item">
  524. <div class="requirement-title">客户对图</div>
  525. <div class="requirement-desc">
  526. • 客户查看效果图<br>
  527. • 提出修改意见<br>
  528. • 调整设计细节<br>
  529. • 确认最终方案
  530. </div>
  531. </div>
  532. </div>
  533. <div class="evaluation-criteria">
  534. <div class="evaluation-title">
  535. <i class="fas fa-clipboard-check"></i>评价维度
  536. </div>
  537. <ul class="criteria-list">
  538. <li>氛围效果:灯光和氛围是否到位</li>
  539. <li>细节表现:材质和细节是否精致</li>
  540. <li>软装效果:摆放、选品、调性是否统一</li>
  541. <li>整体协调:各元素是否和谐统一</li>
  542. </ul>
  543. </div>
  544. </div>
  545. </div>
  546. <!-- 大图阶段 -->
  547. <div class="timeline-item" style="animation-delay: 1.0s;">
  548. <div class="timeline-node">
  549. <i class="fas fa-images"></i>
  550. </div>
  551. <div class="timeline-content">
  552. <div class="phase-title">
  553. <i class="fas fa-hdd"></i>大图阶段
  554. </div>
  555. <div class="phase-description">
  556. 制作高清大图作为最终交付物,满足客户打印和工地使用需求。
  557. </div>
  558. <div class="requirements-grid">
  559. <div class="requirement-item">
  560. <div class="requirement-title">大图渲染</div>
  561. <div class="requirement-desc">
  562. • 每张渲染6-8小时<br>
  563. • 确保4K清晰度<br>
  564. • 最长边像素4000以上<br>
  565. • 支持放大查看细节
  566. </div>
  567. </div>
  568. <div class="requirement-item">
  569. <div class="requirement-title">质量标准</div>
  570. <div class="requirement-desc">
  571. • 适合工地打印使用<br>
  572. • 放大后细节清晰<br>
  573. • 色彩还原准确<br>
  574. • 文件格式规范
  575. </div>
  576. </div>
  577. </div>
  578. <div class="evaluation-criteria">
  579. <div class="evaluation-title">
  580. <i class="fas fa-clipboard-check"></i>评价维度
  581. </div>
  582. <ul class="criteria-list">
  583. <li>分辨率标准:最长边像素达到4000以上</li>
  584. <li>细节清晰度:放大后能清楚看到细节</li>
  585. <li>色彩准确性:色彩还原度高</li>
  586. <li>打印适用性:适合工地打印需求</li>
  587. </ul>
  588. </div>
  589. </div>
  590. </div>
  591. <!-- 后期处理阶段 -->
  592. <div class="timeline-item" style="animation-delay: 1.2s;">
  593. <div class="timeline-node">
  594. <i class="fas fa-magic"></i>
  595. </div>
  596. <div class="timeline-content">
  597. <div class="phase-title">
  598. <i class="fas fa-paint-brush"></i>后期处理阶段
  599. </div>
  600. <div class="phase-description">
  601. 对大图进行PS后期处理,提升画面效果,形成最终交付成果。
  602. </div>
  603. <div class="requirements-grid">
  604. <div class="requirement-item">
  605. <div class="requirement-title">后期处理</div>
  606. <div class="requirement-desc">
  607. • 调整对比度和亮度<br>
  608. • 增强细节表现<br>
  609. • 小范围修图优化<br>
  610. • 色彩平衡调整
  611. </div>
  612. </div>
  613. <div class="requirement-item">
  614. <div class="requirement-title">最终交付</div>
  615. <div class="requirement-desc">
  616. • 提供高清成品图<br>
  617. • 确保文件质量<br>
  618. • 按约定格式交付<br>
  619. • 客户确认收货
  620. </div>
  621. </div>
  622. </div>
  623. <div class="evaluation-criteria">
  624. <div class="evaluation-title">
  625. <i class="fas fa-clipboard-check"></i>评价维度
  626. </div>
  627. <ul class="criteria-list">
  628. <li>后期效果:PS处理是否提升画面质量</li>
  629. <li>细节优化:细节是否得到有效增强</li>
  630. <li>整体效果:最终成品是否达到预期</li>
  631. <li>交付标准:是否符合交付要求</li>
  632. </ul>
  633. </div>
  634. </div>
  635. </div>
  636. </div>
  637. <!-- FAQ部分 -->
  638. <div class="faq-section animate__animated animate__fadeIn animate__delay-1s">
  639. <div class="faq-title">
  640. <i class="fas fa-question-circle"></i>项目流程的悖论与思考
  641. </div>
  642. <div class="mb-4">
  643. <h5 class="text-warning">
  644. <i class="fas fa-exclamation-triangle me-2"></i>核心矛盾
  645. </h5>
  646. <p class="text-secondary">
  647. 内部SOP控制了很多细节,但客户购买效果图主要是为了看效果。这造成了复杂流程与简单需求之间的矛盾。
  648. </p>
  649. </div>
  650. <div class="row">
  651. <div class="col-md-6 mb-3">
  652. <div class="requirement-item">
  653. <div class="requirement-title">客户需求分析</div>
  654. <div class="requirement-desc">
  655. • <strong>谈单签约:</strong>占更多比例,用于展示设计效果<br>
  656. • <strong>施工执行:</strong>用于指导具体施工工作
  657. </div>
  658. </div>
  659. </div>
  660. <div class="col-md-6 mb-3">
  661. <div class="requirement-item">
  662. <div class="requirement-title">未来趋势</div>
  663. <div class="requirement-desc">
  664. • <strong>中低价格:</strong>AI出效果图,只注重效果展示<br>
  665. • <strong>高端项目:</strong>精准控制,完整建模项目流程
  666. </div>
  667. </div>
  668. </div>
  669. </div>
  670. </div>
  671. </div>
  672. <script src="https://cdn.bootcdn.net/ajax/libs/bootstrap/5.3.0/js/bootstrap.bundle.min.js"></script>
  673. <script>
  674. // 滚动触发动画
  675. function animateOnScroll() {
  676. const items = document.querySelectorAll('.timeline-item');
  677. items.forEach(item => {
  678. const rect = item.getBoundingClientRect();
  679. const isVisible = rect.top < window.innerHeight && rect.bottom > 0;
  680. if (isVisible && !item.classList.contains('animated')) {
  681. item.style.opacity = '1';
  682. item.classList.add('animated');
  683. }
  684. });
  685. }
  686. // 页面加载和滚动时触发动画
  687. window.addEventListener('scroll', animateOnScroll);
  688. window.addEventListener('load', animateOnScroll);
  689. // 初始化动画
  690. document.addEventListener('DOMContentLoaded', function() {
  691. // 设置初始状态
  692. const timelineItems = document.querySelectorAll('.timeline-item');
  693. timelineItems.forEach((item, index) => {
  694. item.style.animationDelay = `${0.2 * (index + 1)}s`;
  695. });
  696. // 触发第一次检查
  697. setTimeout(animateOnScroll, 500);
  698. });
  699. </script>
  700. </body>
  701. </html>