WisePath.html 34 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102
  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. <!-- 使用iconfont CDN -->
  8. <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.4.2/css/all.min.css">
  9. <style>
  10. :root {
  11. --primary-color: #4a6bdf;
  12. --secondary-color: #6c5ce7;
  13. --accent-color: #00cec9;
  14. --text-color: #2d3436;
  15. --light-text: #636e72;
  16. --bg-color: #ffffff;
  17. --card-bg: #f5f6fa;
  18. --shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
  19. --transition: all 0.3s ease;
  20. }
  21. [data-theme="dark"] {
  22. --primary-color: #6c5ce7;
  23. --secondary-color: #a29bfe;
  24. --accent-color: #00cec9;
  25. --text-color: #f5f6fa;
  26. --light-text: #b2bec3;
  27. --bg-color: #2d3436;
  28. --card-bg: #1e272e;
  29. --shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
  30. }
  31. * {
  32. margin: 0;
  33. padding: 0;
  34. box-sizing: border-box;
  35. font-family: 'PingFang SC', 'Helvetica Neue', Arial, sans-serif;
  36. }
  37. body {
  38. background-color: var(--bg-color);
  39. color: var(--text-color);
  40. transition: var(--transition);
  41. padding-bottom: 80px;
  42. }
  43. /* 顶部导航栏 */
  44. .header {
  45. position: fixed;
  46. top: 0;
  47. left: 0;
  48. right: 0;
  49. height: 60px;
  50. background-color: var(--bg-color);
  51. box-shadow: var(--shadow);
  52. display: flex;
  53. align-items: center;
  54. padding: 0 15px;
  55. z-index: 1000;
  56. transition: var(--transition);
  57. }
  58. .brand {
  59. display: flex;
  60. align-items: center;
  61. margin-right: 10px;
  62. cursor: pointer;
  63. }
  64. .logo {
  65. font-weight: bold;
  66. font-size: 18px;
  67. color: var(--primary-color);
  68. margin-right: 8px;
  69. }
  70. .globe {
  71. width: 24px;
  72. height: 24px;
  73. background-color: var(--accent-color);
  74. border-radius: 50%;
  75. display: flex;
  76. align-items: center;
  77. justify-content: center;
  78. color: white;
  79. animation: rotate 10s linear infinite;
  80. }
  81. @keyframes rotate {
  82. from { transform: rotate(0deg); }
  83. to { transform: rotate(360deg); }
  84. }
  85. .search-container {
  86. flex: 1;
  87. display: flex;
  88. align-items: center;
  89. position: relative;
  90. }
  91. .search-input {
  92. flex: 1;
  93. height: 36px;
  94. border-radius: 18px;
  95. border: 1px solid #dfe6e9;
  96. padding: 0 15px 0 40px;
  97. font-size: 14px;
  98. background-color: var(--card-bg);
  99. color: var(--text-color);
  100. transition: var(--transition);
  101. }
  102. .search-input:focus {
  103. outline: none;
  104. border-color: var(--primary-color);
  105. }
  106. .search-icon {
  107. position: absolute;
  108. left: 12px;
  109. color: var(--light-text);
  110. }
  111. .voice-search {
  112. margin-left: 10px;
  113. background: none;
  114. border: none;
  115. color: var(--primary-color);
  116. cursor: pointer;
  117. font-size: 18px;
  118. }
  119. .user-actions {
  120. display: flex;
  121. align-items: center;
  122. margin-left: 10px;
  123. }
  124. .user-avatar {
  125. width: 32px;
  126. height: 32px;
  127. border-radius: 50%;
  128. background-color: var(--primary-color);
  129. color: white;
  130. display: flex;
  131. align-items: center;
  132. justify-content: center;
  133. cursor: pointer;
  134. position: relative;
  135. }
  136. .user-menu {
  137. position: absolute;
  138. top: 40px;
  139. right: 0;
  140. background-color: var(--bg-color);
  141. border-radius: 8px;
  142. box-shadow: var(--shadow);
  143. width: 160px;
  144. padding: 10px 0;
  145. display: none;
  146. z-index: 100;
  147. }
  148. .user-menu.show {
  149. display: block;
  150. }
  151. .user-menu-item {
  152. padding: 10px 15px;
  153. font-size: 14px;
  154. cursor: pointer;
  155. transition: var(--transition);
  156. }
  157. .user-menu-item:hover {
  158. background-color: var(--card-bg);
  159. }
  160. .theme-toggle {
  161. margin-left: 12px;
  162. background: none;
  163. border: none;
  164. color: var(--text-color);
  165. cursor: pointer;
  166. font-size: 18px;
  167. }
  168. /* 主内容区 */
  169. .main-content {
  170. margin-top: 60px;
  171. padding: 15px;
  172. }
  173. /* 主视觉轮播 */
  174. .carousel {
  175. position: relative;
  176. height: 200px;
  177. border-radius: 12px;
  178. overflow: hidden;
  179. margin-bottom: 20px;
  180. }
  181. .carousel-inner {
  182. display: flex;
  183. height: 100%;
  184. transition: transform 0.5s ease;
  185. }
  186. .carousel-item {
  187. min-width: 100%;
  188. height: 100%;
  189. position: relative;
  190. }
  191. .carousel-image {
  192. width: 100%;
  193. height: 100%;
  194. object-fit: cover;
  195. }
  196. .carousel-caption {
  197. position: absolute;
  198. bottom: 0;
  199. left: 0;
  200. right: 0;
  201. padding: 15px;
  202. background: linear-gradient(transparent, rgba(0, 0, 0, 0.7));
  203. color: white;
  204. }
  205. .carousel-title {
  206. font-size: 18px;
  207. margin-bottom: 5px;
  208. }
  209. .carousel-tag {
  210. display: inline-block;
  211. background-color: var(--accent-color);
  212. color: white;
  213. padding: 3px 8px;
  214. border-radius: 4px;
  215. font-size: 12px;
  216. margin-right: 5px;
  217. }
  218. .carousel-indicators {
  219. position: absolute;
  220. bottom: 10px;
  221. left: 50%;
  222. transform: translateX(-50%);
  223. display: flex;
  224. }
  225. .indicator {
  226. width: 8px;
  227. height: 8px;
  228. border-radius: 50%;
  229. background-color: rgba(255, 255, 255, 0.5);
  230. margin: 0 4px;
  231. cursor: pointer;
  232. }
  233. .indicator.active {
  234. background-color: white;
  235. width: 16px;
  236. border-radius: 4px;
  237. }
  238. /* 智能规划入口 */
  239. .planning-card {
  240. background-color: var(--card-bg);
  241. border-radius: 12px;
  242. padding: 20px;
  243. margin-bottom: 20px;
  244. box-shadow: var(--shadow);
  245. }
  246. .planning-title {
  247. font-size: 18px;
  248. margin-bottom: 15px;
  249. color: var(--primary-color);
  250. display: flex;
  251. align-items: center;
  252. }
  253. .planning-title i {
  254. margin-right: 8px;
  255. }
  256. .form-group {
  257. margin-bottom: 15px;
  258. }
  259. .form-label {
  260. display: block;
  261. margin-bottom: 5px;
  262. font-size: 14px;
  263. color: var(--light-text);
  264. }
  265. .form-input {
  266. width: 100%;
  267. height: 40px;
  268. border-radius: 8px;
  269. border: 1px solid #dfe6e9;
  270. padding: 0 15px;
  271. font-size: 14px;
  272. background-color: var(--bg-color);
  273. color: var(--text-color);
  274. transition: var(--transition);
  275. }
  276. .form-input:focus {
  277. outline: none;
  278. border-color: var(--primary-color);
  279. }
  280. .tags-container {
  281. display: flex;
  282. flex-wrap: wrap;
  283. gap: 8px;
  284. margin-top: 10px;
  285. }
  286. .tag {
  287. padding: 6px 12px;
  288. background-color: var(--bg-color);
  289. border: 1px solid #dfe6e9;
  290. border-radius: 16px;
  291. font-size: 12px;
  292. cursor: pointer;
  293. transition: var(--transition);
  294. }
  295. .tag.selected {
  296. background-color: var(--primary-color);
  297. color: white;
  298. border-color: var(--primary-color);
  299. }
  300. .generate-btn {
  301. width: 100%;
  302. height: 45px;
  303. background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
  304. color: white;
  305. border: none;
  306. border-radius: 8px;
  307. font-size: 16px;
  308. font-weight: bold;
  309. cursor: pointer;
  310. margin-top: 10px;
  311. transition: var(--transition);
  312. position: relative;
  313. overflow: hidden;
  314. }
  315. .generate-btn:hover {
  316. transform: translateY(-2px);
  317. box-shadow: 0 6px 12px rgba(74, 107, 223, 0.3);
  318. }
  319. .generate-btn::after {
  320. content: '';
  321. position: absolute;
  322. top: -50%;
  323. left: -50%;
  324. width: 200%;
  325. height: 200%;
  326. background: linear-gradient(
  327. to bottom right,
  328. rgba(255, 255, 255, 0) 0%,
  329. rgba(255, 255, 255, 0) 45%,
  330. rgba(255, 255, 255, 0.5) 50%,
  331. rgba(255, 255, 255, 0) 55%,
  332. rgba(255, 255, 255, 0) 100%
  333. );
  334. transform: rotate(30deg);
  335. animation: shine 3s infinite;
  336. }
  337. @keyframes shine {
  338. 0% { transform: translateX(-100%) rotate(30deg); }
  339. 100% { transform: translateX(100%) rotate(30deg); }
  340. }
  341. .advanced-toggle {
  342. display: flex;
  343. align-items: center;
  344. color: var(--primary-color);
  345. font-size: 14px;
  346. margin-top: 15px;
  347. cursor: pointer;
  348. }
  349. .advanced-toggle i {
  350. margin-right: 5px;
  351. transition: transform 0.3s ease;
  352. }
  353. .advanced-toggle.active i {
  354. transform: rotate(180deg);
  355. }
  356. .advanced-options {
  357. display: none;
  358. margin-top: 15px;
  359. padding-top: 15px;
  360. border-top: 1px solid #dfe6e9;
  361. }
  362. .advanced-options.show {
  363. display: block;
  364. }
  365. .slider-container {
  366. margin-top: 10px;
  367. }
  368. .slider {
  369. width: 100%;
  370. height: 4px;
  371. -webkit-appearance: none;
  372. background: #dfe6e9;
  373. border-radius: 2px;
  374. outline: none;
  375. margin-top: 10px;
  376. }
  377. .slider::-webkit-slider-thumb {
  378. -webkit-appearance: none;
  379. width: 18px;
  380. height: 18px;
  381. background: var(--primary-color);
  382. border-radius: 50%;
  383. cursor: pointer;
  384. }
  385. .slider-value {
  386. font-size: 12px;
  387. color: var(--light-text);
  388. text-align: right;
  389. }
  390. /* 实时动态栏 */
  391. .news-ticker {
  392. background-color: var(--card-bg);
  393. border-radius: 8px;
  394. padding: 10px 15px;
  395. margin-bottom: 20px;
  396. display: flex;
  397. align-items: center;
  398. box-shadow: var(--shadow);
  399. }
  400. .news-icon {
  401. color: var(--accent-color);
  402. margin-right: 10px;
  403. font-size: 18px;
  404. }
  405. .news-content {
  406. flex: 1;
  407. overflow: hidden;
  408. }
  409. .news-item {
  410. display: inline-block;
  411. margin-right: 30px;
  412. font-size: 14px;
  413. white-space: nowrap;
  414. color: var(--text-color);
  415. }
  416. /* 特色主题推荐 */
  417. .section-title {
  418. font-size: 16px;
  419. margin-bottom: 15px;
  420. display: flex;
  421. align-items: center;
  422. justify-content: space-between;
  423. }
  424. .section-title i {
  425. color: var(--light-text);
  426. font-size: 14px;
  427. }
  428. .theme-grid {
  429. display: grid;
  430. grid-template-columns: repeat(3, 1fr);
  431. gap: 12px;
  432. margin-bottom: 20px;
  433. }
  434. .theme-item {
  435. background-color: var(--card-bg);
  436. border-radius: 8px;
  437. padding: 15px 0;
  438. display: flex;
  439. flex-direction: column;
  440. align-items: center;
  441. justify-content: center;
  442. text-align: center;
  443. box-shadow: var(--shadow);
  444. transition: var(--transition);
  445. cursor: pointer;
  446. }
  447. .theme-item:hover {
  448. transform: translateY(-3px);
  449. box-shadow: 0 6px 12px rgba(0, 0, 0, 0.1);
  450. }
  451. .theme-icon {
  452. width: 40px;
  453. height: 40px;
  454. background-color: var(--primary-color);
  455. border-radius: 50%;
  456. display: flex;
  457. align-items: center;
  458. justify-content: center;
  459. color: white;
  460. margin-bottom: 8px;
  461. font-size: 18px;
  462. }
  463. .theme-name {
  464. font-size: 12px;
  465. color: var(--text-color);
  466. }
  467. /* AI精选案例 */
  468. .ugc-list {
  469. display: grid;
  470. gap: 15px;
  471. margin-bottom: 20px;
  472. }
  473. .ugc-item {
  474. background-color: var(--card-bg);
  475. border-radius: 12px;
  476. overflow: hidden;
  477. box-shadow: var(--shadow);
  478. }
  479. .ugc-image {
  480. width: 100%;
  481. height: 150px;
  482. object-fit: cover;
  483. }
  484. .ugc-content {
  485. padding: 15px;
  486. }
  487. .ugc-title {
  488. font-size: 16px;
  489. margin-bottom: 8px;
  490. }
  491. .ugc-desc {
  492. font-size: 13px;
  493. color: var(--light-text);
  494. margin-bottom: 12px;
  495. display: -webkit-box;
  496. -webkit-line-clamp: 2;
  497. -webkit-box-orient: vertical;
  498. overflow: hidden;
  499. }
  500. .ugc-meta {
  501. display: flex;
  502. align-items: center;
  503. justify-content: space-between;
  504. font-size: 12px;
  505. color: var(--light-text);
  506. }
  507. .ugc-actions {
  508. display: flex;
  509. align-items: center;
  510. }
  511. .ugc-action {
  512. margin-left: 12px;
  513. display: flex;
  514. align-items: center;
  515. cursor: pointer;
  516. }
  517. .ugc-action i {
  518. margin-right: 4px;
  519. font-size: 14px;
  520. }
  521. .ugc-action.liked i {
  522. color: #ff4757;
  523. }
  524. /* 底部辅助区 */
  525. .footer-toolbar {
  526. position: fixed;
  527. bottom: 0;
  528. left: 0;
  529. right: 0;
  530. height: 60px;
  531. background-color: var(--bg-color);
  532. box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.05);
  533. display: flex;
  534. justify-content: space-around;
  535. align-items: center;
  536. padding: 0 20px;
  537. z-index: 1000;
  538. }
  539. .tool-button {
  540. display: flex;
  541. flex-direction: column;
  542. align-items: center;
  543. justify-content: center;
  544. color: var(--light-text);
  545. font-size: 10px;
  546. cursor: pointer;
  547. transition: var(--transition);
  548. }
  549. .tool-button i {
  550. font-size: 20px;
  551. margin-bottom: 4px;
  552. }
  553. .tool-button.sos i {
  554. color: #ff4757;
  555. }
  556. .tool-button.primary i {
  557. color: var(--primary-color);
  558. }
  559. .footer {
  560. padding: 20px 15px;
  561. text-align: center;
  562. font-size: 12px;
  563. color: var(--light-text);
  564. border-top: 1px solid #dfe6e9;
  565. }
  566. .partners {
  567. display: flex;
  568. justify-content: center;
  569. flex-wrap: wrap;
  570. gap: 15px;
  571. margin: 15px 0;
  572. }
  573. .partner-logo {
  574. height: 20px;
  575. opacity: 0.7;
  576. filter: grayscale(100%);
  577. transition: var(--transition);
  578. }
  579. .partner-logo:hover {
  580. opacity: 1;
  581. filter: grayscale(0%);
  582. }
  583. .social-links {
  584. display: flex;
  585. justify-content: center;
  586. gap: 15px;
  587. margin-top: 15px;
  588. }
  589. .social-link {
  590. color: var(--light-text);
  591. font-size: 18px;
  592. transition: var(--transition);
  593. }
  594. .social-link:hover {
  595. color: var(--primary-color);
  596. }
  597. </style>
  598. </head>
  599. <body>
  600. <!-- 顶部导航栏 -->
  601. <header class="header">
  602. <div class="brand" onclick="goHome()">
  603. <div class="logo">智途</div>
  604. <div class="globe">
  605. <i class="fas fa-globe-americas"></i>
  606. </div>
  607. </div>
  608. <div class="search-container">
  609. <i class="fas fa-search search-icon"></i>
  610. <input type="text" class="search-input" placeholder="输入目的地、兴趣或关键词...">
  611. <button class="voice-search">
  612. <i class="fas fa-microphone"></i>
  613. </button>
  614. </div>
  615. <div class="user-actions">
  616. <div class="user-avatar" onclick="toggleUserMenu()">
  617. <i class="fas fa-user"></i>
  618. <div class="user-menu" id="userMenu">
  619. <div class="user-menu-item">
  620. <i class="fas fa-map-marked-alt" style="margin-right: 8px;"></i>我的行程
  621. </div>
  622. <div class="user-menu-item">
  623. <i class="fas fa-heart" style="margin-right: 8px;"></i>收藏
  624. </div>
  625. <div class="user-menu-item">
  626. <i class="fas fa-bell" style="margin-right: 8px;"></i>消息通知
  627. </div>
  628. </div>
  629. </div>
  630. <button class="theme-toggle" onclick="toggleTheme()">
  631. <i class="fas fa-moon"></i>
  632. </button>
  633. </div>
  634. </header>
  635. <!-- 主内容区 -->
  636. <main class="main-content">
  637. <!-- 主视觉轮播 -->
  638. <div class="carousel">
  639. <div class="carousel-inner" id="carouselInner">
  640. <div class="carousel-item">
  641. <img src="https://images.unsplash.com/photo-1503917988258-f87a78e3c995?ixlib=rb-1.2.1&auto=format&fit=crop&w=800&q=80" alt="推荐目的地" class="carousel-image">
  642. <div class="carousel-caption">
  643. <div class="carousel-title">丽江古城</div>
  644. <div>
  645. <span class="carousel-tag">文化探索</span>
  646. <span class="carousel-tag">摄影圣地</span>
  647. </div>
  648. </div>
  649. </div>
  650. <div class="carousel-item">
  651. <img src="https://images.unsplash.com/photo-1527631746610-bca00a040d60?ixlib=rb-1.2.1&auto=format&fit=crop&w=800&q=80" alt="推荐目的地" class="carousel-image">
  652. <div class="carousel-caption">
  653. <div class="carousel-title">三亚海滩</div>
  654. <div>
  655. <span class="carousel-tag">亲子乐园</span>
  656. <span class="carousel-tag">度假胜地</span>
  657. </div>
  658. </div>
  659. </div>
  660. <div class="carousel-item">
  661. <img src="https://images.unsplash.com/photo-1527631746610-bca00a040d60?ixlib=rb-1.2.1&auto=format&fit=crop&w=800&q=80" alt="推荐目的地" class="carousel-image">
  662. <div class="carousel-caption">
  663. <div class="carousel-title">西藏拉萨</div>
  664. <div>
  665. <span class="carousel-tag">小众秘境</span>
  666. <span class="carousel-tag">心灵之旅</span>
  667. </div>
  668. </div>
  669. </div>
  670. </div>
  671. <div class="carousel-indicators" id="carouselIndicators">
  672. <div class="indicator active"></div>
  673. <div class="indicator"></div>
  674. <div class="indicator"></div>
  675. </div>
  676. </div>
  677. <!-- 智能规划入口 -->
  678. <div class="planning-card">
  679. <h3 class="planning-title">
  680. <i class="fas fa-route"></i>智能行程规划
  681. </h3>
  682. <div class="form-group">
  683. <label class="form-label">目的地</label>
  684. <input type="text" class="form-input" placeholder="想去哪里玩?">
  685. </div>
  686. <div class="form-group">
  687. <label class="form-label">出行日期</label>
  688. <input type="text" class="form-input" placeholder="选择日期范围" onfocus="showDatePicker()">
  689. </div>
  690. <div class="form-group">
  691. <label class="form-label">兴趣标签</label>
  692. <div class="tags-container">
  693. <div class="tag">美食</div>
  694. <div class="tag selected">摄影</div>
  695. <div class="tag">冒险</div>
  696. <div class="tag">购物</div>
  697. <div class="tag">文化</div>
  698. <div class="tag">自然</div>
  699. </div>
  700. </div>
  701. <button class="generate-btn">一键生成路线</button>
  702. <div class="advanced-toggle" onclick="toggleAdvancedOptions()">
  703. <i class="fas fa-chevron-down"></i>高级筛选
  704. </div>
  705. <div class="advanced-options" id="advancedOptions">
  706. <div class="form-group">
  707. <label class="form-label">预算范围</label>
  708. <div class="slider-container">
  709. <input type="range" min="500" max="10000" value="3000" step="500" class="slider" id="budgetSlider">
  710. <div class="slider-value">¥3000</div>
  711. </div>
  712. </div>
  713. <div class="form-group">
  714. <label class="form-label">同行人数</label>
  715. <select class="form-input">
  716. <option>1人</option>
  717. <option>2人</option>
  718. <option selected>3-5人</option>
  719. <option>6-10人</option>
  720. <option>10人以上</option>
  721. </select>
  722. </div>
  723. <div class="form-group">
  724. <label class="form-label">交通偏好</label>
  725. <div class="tags-container">
  726. <div class="tag selected">公共交通</div>
  727. <div class="tag">自驾</div>
  728. <div class="tag">包车</div>
  729. </div>
  730. </div>
  731. </div>
  732. </div>
  733. <!-- 实时动态栏 -->
  734. <div class="news-ticker">
  735. <i class="fas fa-bullhorn news-icon"></i>
  736. <div class="news-content" id="newsContent">
  737. <div class="news-item">🔥 五一假期热门活动: 丽江古城文化节限时优惠</div>
  738. <div class="news-item">⚠️ 天气预警: 三亚明日有雷阵雨,请携带雨具</div>
  739. <div class="news-item">🎉 新用户专享: 首次规划行程立减100元</div>
  740. </div>
  741. </div>
  742. <!-- 特色主题推荐 -->
  743. <h3 class="section-title">
  744. 特色主题推荐
  745. <i class="fas fa-ellipsis-h"></i>
  746. </h3>
  747. <div class="theme-grid">
  748. <div class="theme-item">
  749. <div class="theme-icon">
  750. <i class="fas fa-graduation-cap"></i>
  751. </div>
  752. <div class="theme-name">毕业旅行</div>
  753. </div>
  754. <div class="theme-item">
  755. <div class="theme-icon">
  756. <i class="fas fa-umbrella-beach"></i>
  757. </div>
  758. <div class="theme-name">周末短途</div>
  759. </div>
  760. <div class="theme-item">
  761. <div class="theme-icon">
  762. <i class="fas fa-heart"></i>
  763. </div>
  764. <div class="theme-name">蜜月之旅</div>
  765. </div>
  766. <div class="theme-item">
  767. <div class="theme-icon">
  768. <i class="fas fa-hiking"></i>
  769. </div>
  770. <div class="theme-name">户外探险</div>
  771. </div>
  772. <div class="theme-item">
  773. <div class="theme-icon">
  774. <i class="fas fa-utensils"></i>
  775. </div>
  776. <div class="theme-name">美食之旅</div>
  777. </div>
  778. <div class="theme-item">
  779. <div class="theme-icon">
  780. <i class="fas fa-camera"></i>
  781. </div>
  782. <div class="theme-name">摄影路线</div>
  783. </div>
  784. </div>
  785. <!-- AI精选案例 -->
  786. <h3 class="section-title">
  787. AI精选案例
  788. <i class="fas fa-ellipsis-h"></i>
  789. </h3>
  790. <div class="ugc-list">
  791. <div class="ugc-item">
  792. <img src="https://images.unsplash.com/photo-1503917988258-f87a78e3c995?ixlib=rb-1.2.1&auto=format&fit=crop&w=800&q=80" alt="行程案例" class="ugc-image">
  793. <div class="ugc-content">
  794. <h4 class="ugc-title">7天云南深度游</h4>
  795. <p class="ugc-desc">从昆明到大理再到丽江,体验云南多元文化和壮丽自然风光,特别推荐洱海骑行和玉龙雪山一日游。</p>
  796. <div class="ugc-meta">
  797. <span>by 旅行达人小王</span>
  798. <div class="ugc-actions">
  799. <div class="ugc-action">
  800. <i class="far fa-eye"></i> 1.2k
  801. </div>
  802. <div class="ugc-action">
  803. <i class="far fa-comment"></i> 56
  804. </div>
  805. <div class="ugc-action">
  806. <i class="far fa-heart"></i> 324
  807. </div>
  808. </div>
  809. </div>
  810. </div>
  811. </div>
  812. <div class="ugc-item">
  813. <img src="https://images.unsplash.com/photo-1527631746610-bca00a040d60?ixlib=rb-1.2.1&auto=format&fit=crop&w=800&q=80" alt="行程案例" class="ugc-image">
  814. <div class="ugc-content">
  815. <h4 class="ugc-title">三亚亲子5日游</h4>
  816. <p class="ugc-desc">专为家庭设计的轻松行程,包含亚龙湾海滩、蜈支洲岛和亚特兰蒂斯水世界,孩子玩得开心,家长也能放松。</p>
  817. <div class="ugc-meta">
  818. <span>by 亲子旅行专家</span>
  819. <div class="ugc-actions">
  820. <div class="ugc-action">
  821. <i class="far fa-eye"></i> 892
  822. </div>
  823. <div class="ugc-action">
  824. <i class="far fa-comment"></i> 43
  825. </div>
  826. <div class="ugc-action liked">
  827. <i class="fas fa-heart"></i> 567
  828. </div>
  829. </div>
  830. </div>
  831. </div>
  832. </div>
  833. </div>
  834. </main>
  835. <!-- 底部辅助区 -->
  836. <div class="footer-toolbar">
  837. <div class="tool-button sos">
  838. <i class="fas fa-life-ring"></i>
  839. <span>SOS</span>
  840. </div>
  841. <div class="tool-button">
  842. <i class="fas fa-home"></i>
  843. <span>首页</span>
  844. </div>
  845. <div class="tool-button">
  846. <i class="fas fa-compass"></i>
  847. <span>发现</span>
  848. </div>
  849. <div class="tool-button">
  850. <i class="fas fa-suitcase"></i>
  851. <span>行程</span>
  852. </div>
  853. <div class="tool-button primary">
  854. <i class="fas fa-robot"></i>
  855. <span>AI客服</span>
  856. </div>
  857. </div>
  858. <footer class="footer">
  859. <div class="partners">
  860. <img src="https://via.placeholder.com/80x30?text=Partner1" alt="合作伙伴" class="partner-logo">
  861. <img src="https://via.placeholder.com/80x30?text=Partner2" alt="合作伙伴" class="partner-logo">
  862. <img src="https://via.placeholder.com/80x30?text=Partner3" alt="合作伙伴" class="partner-logo">
  863. </div>
  864. <div>© 2023 智途智能旅行规划工具 版权所有</div>
  865. <div class="social-links">
  866. <a href="#" class="social-link">
  867. <i class="fab fa-weixin"></i>
  868. </a>
  869. <a href="#" class="social-link">
  870. <i class="fab fa-weibo"></i>
  871. </a>
  872. <a href="#" class="social-link">
  873. <i class="fab fa-qq"></i>
  874. </a>
  875. <a href="#" class="social-link">
  876. <i class="fab fa-douban"></i>
  877. </a>
  878. </div>
  879. </footer>
  880. <script>
  881. // 切换用户菜单
  882. function toggleUserMenu() {
  883. const userMenu = document.getElementById('userMenu');
  884. userMenu.classList.toggle('show');
  885. }
  886. // 切换主题
  887. function toggleTheme() {
  888. const body = document.body;
  889. const themeToggle = document.querySelector('.theme-toggle i');
  890. if (body.getAttribute('data-theme') === 'dark') {
  891. body.removeAttribute('data-theme');
  892. themeToggle.classList.remove('fa-sun');
  893. themeToggle.classList.add('fa-moon');
  894. } else {
  895. body.setAttribute('data-theme', 'dark');
  896. themeToggle.classList.remove('fa-moon');
  897. themeToggle.classList.add('fa-sun');
  898. }
  899. }
  900. // 返回首页
  901. function goHome() {
  902. window.scrollTo({ top: 0, behavior: 'smooth' });
  903. }
  904. // 切换高级选项
  905. function toggleAdvancedOptions() {
  906. const options = document.getElementById('advancedOptions');
  907. const toggle = document.querySelector('.advanced-toggle');
  908. const icon = toggle.querySelector('i');
  909. options.classList.toggle('show');
  910. toggle.classList.toggle('active');
  911. }
  912. // 标签选择
  913. document.querySelectorAll('.tag').forEach(tag => {
  914. tag.addEventListener('click', function() {
  915. this.classList.toggle('selected');
  916. });
  917. });
  918. // 预算滑块
  919. const budgetSlider = document.getElementById('budgetSlider');
  920. const sliderValue = document.querySelector('.slider-value');
  921. budgetSlider.addEventListener('input', function() {
  922. sliderValue.textContent = `¥${this.value}`;
  923. });
  924. // 轮播图
  925. let currentSlide = 0;
  926. const carouselInner = document.getElementById('carouselInner');
  927. const indicators = document.querySelectorAll('.indicator');
  928. const totalSlides = document.querySelectorAll('.carousel-item').length;
  929. function updateCarousel() {
  930. carouselInner.style.transform = `translateX(-${currentSlide * 100}%)`;
  931. indicators.forEach((indicator, index) => {
  932. if (index === currentSlide) {
  933. indicator.classList.add('active');
  934. } else {
  935. indicator.classList.remove('active');
  936. }
  937. });
  938. }
  939. indicators.forEach((indicator, index) => {
  940. indicator.addEventListener('click', () => {
  941. currentSlide = index;
  942. updateCarousel();
  943. });
  944. });
  945. // 自动轮播
  946. setInterval(() => {
  947. currentSlide = (currentSlide + 1) % totalSlides;
  948. updateCarousel();
  949. }, 5000);
  950. // 新闻跑马灯
  951. const newsContent = document.getElementById('newsContent');
  952. const newsItems = document.querySelectorAll('.news-item');
  953. let currentNews = 0;
  954. function scrollNews() {
  955. currentNews = (currentNews + 1) % newsItems.length;
  956. newsContent.style.transform = `translateX(-${currentNews * 100}%)`;
  957. }
  958. setInterval(scrollNews, 3000);
  959. // 点赞功能
  960. document.querySelectorAll('.ugc-action').forEach(action => {
  961. if (action.querySelector('.fa-heart')) {
  962. action.addEventListener('click', function() {
  963. const heartIcon = this.querySelector('i');
  964. const isLiked = this.classList.contains('liked');
  965. const countElement = this.querySelector('i').nextSibling;
  966. if (isLiked) {
  967. this.classList.remove('liked');
  968. heartIcon.classList.remove('fas');
  969. heartIcon.classList.add('far');
  970. countElement.textContent = ` ${parseInt(countElement.textContent) - 1}`;
  971. } else {
  972. this.classList.add('liked');
  973. heartIcon.classList.remove('far');
  974. heartIcon.classList.add('fas');
  975. countElement.textContent = ` ${parseInt(countElement.textContent) + 1}`;
  976. }
  977. });
  978. }
  979. });
  980. // 显示日期选择器
  981. function showDatePicker() {
  982. // 实际项目中可以集成第三方日期选择器库
  983. alert('将显示日期选择器');
  984. }
  985. </script>
  986. </body>
  987. </html>