index.wxss 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110
  1. page {
  2. font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif;
  3. position: relative;
  4. height: 100%;
  5. }
  6. /* 搜索框样式 */
  7. .sousuo {
  8. background-color: rgba(255, 255, 255, 0.7);
  9. backdrop-filter: blur(10rpx);
  10. border: 1rpx solid rgba(255, 205, 210, 0.5);
  11. display: flex;
  12. height: 80rpx;
  13. margin: 30rpx;
  14. border-radius: 40rpx;
  15. align-items: center;
  16. padding: 0 20rpx;
  17. border: 1rpx solid #FFCDD2;
  18. margin-top: -60rpx;
  19. position: relative;
  20. z-index: 2;
  21. box-shadow: 0 4rpx 12rpx rgba(211, 47, 47, 0.1);
  22. }
  23. .sousuo .item1 {
  24. padding-right: 20rpx;
  25. }
  26. .sousuo .item1 .iconfont {
  27. color: #D32F2F;
  28. font-size: 36rpx;
  29. display: flex;
  30. align-items: center;
  31. justify-content: center;
  32. width: 60rpx;
  33. height: 60rpx;
  34. border-radius: 50%;
  35. background: rgba(211, 47, 47, 0.05);
  36. padding: 12rpx;
  37. }
  38. .search {
  39. height: 100%;
  40. width: 100%;
  41. font-size: 28rpx;
  42. color: #333;
  43. }
  44. /* 菜单容器 */
  45. .menu {
  46. margin: 30rpx;
  47. background: transparent;
  48. }
  49. .service-container {
  50. display: flex;
  51. flex-wrap: wrap;
  52. justify-content: space-between;
  53. }
  54. /* 优化后的菜单项 */
  55. .item {
  56. width: 180rpx;
  57. height: 180rpx;
  58. border-radius: 50%;
  59. background: rgba(255, 255, 255, 0.7);
  60. backdrop-filter: blur(10rpx);
  61. border: 1rpx solid rgba(255, 255, 255, 0.3);
  62. display: flex;
  63. flex-direction: column;
  64. align-items: center;
  65. justify-content: center;
  66. padding: 20rpx;
  67. box-sizing: border-box;
  68. margin-bottom: 24rpx;
  69. box-shadow: 0 4rpx 16rpx rgba(211, 47, 47, 0.08);
  70. transition: all 0.3s ease;
  71. position: relative;
  72. overflow: hidden;
  73. }
  74. /* 调整顶部装饰线为圆形适配 */
  75. .item::before {
  76. content: "";
  77. position: absolute;
  78. top: 10rpx;
  79. left: 50%;
  80. transform: translateX(-50%);
  81. width: 40%;
  82. height: 3rpx;
  83. background: linear-gradient(90deg, #D32F2F, #FF8A80);
  84. border-radius: 3rpx;
  85. z-index: 1;
  86. }
  87. /* 点击效果增强 */
  88. .item:active {
  89. transform: scale(0.95);
  90. background: rgba(255, 255, 255, 0.9);
  91. }
  92. /* 内容适配调整 */
  93. .service-link {
  94. display: flex;
  95. flex-direction: column;
  96. align-items: center;
  97. justify-content: center;
  98. width: 100%;
  99. height: 100%;
  100. }
  101. /* 图标调整 */
  102. .img {
  103. width:80rpx;
  104. height: 100rpx;
  105. margin-bottom: 10rpx;
  106. padding: 12rpx;
  107. background: rgba(211, 47, 47, 0.1);
  108. border-radius: 50%;
  109. transition: all 0.3s;
  110. }
  111. .item:active .img {
  112. transform: scale(0.92);
  113. background: rgba(211, 47, 47, 0.08);
  114. }
  115. /* 文字样式微调 */
  116. .title {
  117. font-size: 26rpx;
  118. color: #D32F2F;
  119. text-align: center;
  120. width: 100%;
  121. padding: 0 10rpx;
  122. }
  123. .hero-gradient {
  124. background: linear-gradient(
  125. to bottom,
  126. transparent 0%,
  127. rgba(255,255,255,0.3) 30%,
  128. rgba(255,255,255,0.7) 70%,
  129. #FFFFFF 100%
  130. );
  131. }
  132. /* 背景装饰 */
  133. .background-overlay {
  134. position: fixed;
  135. bottom: 0;
  136. left: 0;
  137. width: 100%;
  138. height: 300rpx;
  139. background:
  140. linear-gradient(to top, rgba(255,245,245,1) 0%, rgba(255,245,245,0) 30%),
  141. url('/images/index/qizhi.jpg') bottom center/100% auto no-repeat;
  142. z-index: -1;
  143. pointer-events: none;
  144. }
  145. .page-container {
  146. position: relative;
  147. min-height: 100vh;
  148. padding-bottom: 400rpx;
  149. }
  150. /* 故事会容器 */
  151. .story-container {
  152. margin: 40rpx 30rpx 0;
  153. }
  154. .section-header {
  155. margin-bottom: 30rpx;
  156. position: relative;
  157. }
  158. .section-title {
  159. font-size: 36rpx;
  160. color: #D32F2F;
  161. font-weight: bold;
  162. display: block;
  163. margin: 20rpx 0 30rpx 20rpx;
  164. }
  165. .brush-stroke {
  166. width: 150rpx;
  167. height: 16rpx;
  168. background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 16"><path d="M0,8 C30,2 80,14 150,8" stroke="%23D32F2F" stroke-width="3" fill="none" stroke-linecap="round"/></svg>');
  169. margin-top: 10rpx;
  170. }
  171. .story-scroll {
  172. width: 100%;
  173. white-space: nowrap;
  174. }
  175. .story-list {
  176. display: inline-flex;
  177. }
  178. .story-card {
  179. display: inline-flex;
  180. width: 400rpx;
  181. height: 300rpx;
  182. margin-right: 24rpx;
  183. position: relative;
  184. overflow: hidden;
  185. border-radius: 12rpx;
  186. box-shadow: 0 4rpx 16rpx rgba(0,0,0,0.08);
  187. transition: all 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28);
  188. }
  189. .story-card image {
  190. width: 100%;
  191. height: 100%;
  192. object-fit: cover;
  193. display: block;
  194. transition: transform 0.5s ease;
  195. }
  196. .story-card:hover image {
  197. transform: scale(1.03);
  198. }
  199. .story-info {
  200. position: absolute;
  201. bottom: 0;
  202. left: 0;
  203. right: 0;
  204. padding: 24rpx;
  205. background: linear-gradient(
  206. to top,
  207. rgba(0,0,0,0.7) 0%,
  208. rgba(0,0,0,0.4) 60%,
  209. transparent 100%
  210. );
  211. backdrop-filter: blur(2px);
  212. }
  213. .story-title {
  214. color: white;
  215. font-size: 30rpx;
  216. font-weight: 500;
  217. line-height: 1.4;
  218. text-shadow: 0 1rpx 3rpx rgba(0,0,0,0.3);
  219. letter-spacing: 0.5rpx;
  220. position: relative;
  221. padding-bottom: 8rpx;
  222. }
  223. .story-title::after {
  224. content: "";
  225. position: absolute;
  226. bottom: 0;
  227. left: 0;
  228. width: 40rpx;
  229. height: 2rpx;
  230. background: white;
  231. opacity: 0.8;
  232. }
  233. .story-card:active {
  234. transform: translateY(-4rpx);
  235. box-shadow: 0 8rpx 24rpx rgba(0,0,0,0.12);
  236. }
  237. /* 自定义画廊 */
  238. .custom-gallery {
  239. margin: 40rpx 30rpx 0;
  240. }
  241. .custom-frame {
  242. width: 400rpx;
  243. height: 300rpx;
  244. position: relative;
  245. display: inline-block;
  246. margin-right: 30rpx;
  247. transition: all 0.3s ease;
  248. }
  249. .custom-frame image {
  250. width: 100%;
  251. height: 100%;
  252. object-fit: cover;
  253. clip-path: path('M20,0 L380,0 Q400,20 380,40 L340,80 Q320,100 340,120 L380,160 Q400,180 380,200 L340,240 Q320,260 340,280 L380,300 Q400,280 380,260 L340,220 Q320,200 340,180 L380,140 Q400,120 380,100 L340,60 Q320,40 340,20 L380,0');
  254. transition: all 0.5s ease;
  255. filter: brightness(0.95);
  256. }
  257. .custom-frame:hover image {
  258. filter: brightness(1.05);
  259. transform: scale(1.02);
  260. }
  261. .frame-caption {
  262. position: absolute;
  263. bottom: 0;
  264. left: 0;
  265. right: 0;
  266. padding: 20rpx;
  267. background: linear-gradient(to top, rgba(0,0,0,0.7), transparent);
  268. color: white;
  269. font-size: 28rpx;
  270. text-align: center;
  271. }
  272. .gallery-scroll {
  273. white-space: nowrap;
  274. width: 100%;
  275. padding: 20rpx 0;
  276. }
  277. .custom-frame-list {
  278. display: inline-flex;
  279. }
  280. .taolun {
  281. width: 800rpx;
  282. height: 300rpx;
  283. background-color: #ffffff;
  284. margin-top: 25rpx;
  285. margin-right: 10rpx;
  286. margin-left: 10rpx;
  287. }
  288. /* 优化后的横向功能入口样式 */
  289. .horizontal-features {
  290. display: flex;
  291. justify-content: flex-start;
  292. margin-left: 30rpx;
  293. gap: 40rpx;
  294. padding: 0;
  295. width: calc(100% - 50rpx);
  296. }
  297. .feature-box {
  298. display: flex;
  299. flex-direction: column;
  300. align-items: center;
  301. width: 300rpx;
  302. padding: 1rpx 0;
  303. border-radius: 16rpx;
  304. background: #fff;
  305. box-shadow: 0 2rpx 8rpx rgba(211, 47, 47, 0.1);
  306. border: 1rpx solid #FFEBEE;
  307. }
  308. .feature-icon {
  309. width: 100rpx;
  310. height: 60rpx;
  311. border-radius: 50%;
  312. display: flex;
  313. align-items: center;
  314. justify-content: center;
  315. margin-bottom: 12rpx;
  316. padding: 6rpx;
  317. background: linear-gradient(135deg, #FFEBEE 0%, #FFCDD2 100%);
  318. }
  319. .feature-img {
  320. width: 100%;
  321. height: 80%;
  322. display: block;
  323. }
  324. .feature-name {
  325. font-size: 32rpx;
  326. color: #333;
  327. margin-bottom: 8rpx;
  328. font-weight: 500;
  329. }
  330. .feature-tag {
  331. font-size: 30rpx;
  332. color: white;
  333. padding: 2rpx 10rpx;
  334. border-radius: 12rpx;
  335. background: linear-gradient(135deg, #D32F2F 0%, #F44336 100%);
  336. }
  337. /* 悬浮按钮容器 */
  338. .float-container {
  339. position: fixed;
  340. right: 20rpx;
  341. bottom: 100rpx;
  342. z-index: 999;
  343. }
  344. /* 悬浮按钮 */
  345. .float-btn {
  346. width: 200rpx;
  347. height: 200rpx;
  348. border-radius: 50%;
  349. transition: transform 0.3s ease;
  350. }
  351. .float-btn:active {
  352. transform: scale(0.9);
  353. }
  354. /* 小人走路动画 */
  355. @keyframes walk {
  356. 0%, 100% { transform: translateY(0); }
  357. 50% { transform: translateY(-20rpx); }
  358. }
  359. .float-btn.walking {
  360. animation: walk 1s infinite;
  361. }
  362. /* 弹出菜单 */
  363. .float-menu {
  364. position: absolute;
  365. right: 0;
  366. bottom: 100rpx;
  367. width: 200rpx;
  368. background: #fff;
  369. border-radius: 8rpx;
  370. box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.15);
  371. transform-origin: bottom right;
  372. animation: scaleIn 0.2s ease-out;
  373. }
  374. .menu-item {
  375. padding: 20rpx;
  376. text-align: center;
  377. border-bottom: 1rpx solid #f5f5f5;
  378. }
  379. .menu-item:last-child {
  380. border-bottom: none;
  381. }
  382. /* 遮罩层 */
  383. .mask {
  384. position: fixed;
  385. top: 0;
  386. left: 0;
  387. right: 0;
  388. bottom: 0;
  389. background: rgba(0, 0, 0, 0.5);
  390. z-index: 998;
  391. }
  392. /* 动画效果 */
  393. @keyframes scaleIn {
  394. from {
  395. transform: scale(0);
  396. opacity: 0;
  397. }
  398. to {
  399. transform: scale(1);
  400. opacity: 1;
  401. }
  402. }
  403. /* 地图容器 */
  404. #myMap {
  405. width: 100%;
  406. height: 150px;
  407. }
  408. /* 自定义弹窗样式 */
  409. .custom-modal {
  410. position: fixed;
  411. top: 0;
  412. left: 0;
  413. right: 0;
  414. bottom: 0;
  415. background: rgba(0,0,0,0.8);
  416. z-index: 1000;
  417. display: flex;
  418. justify-content: center;
  419. align-items: center;
  420. }
  421. .modal-content {
  422. width: 85%;
  423. max-width: 650rpx;
  424. background: #fff;
  425. border-radius: 20rpx;
  426. overflow: hidden;
  427. position: relative;
  428. }
  429. .scroll-container {
  430. max-height: 70vh;
  431. padding-bottom: 120rpx;
  432. }
  433. /* 弹窗内图片样式 */
  434. .modal-image {
  435. width: 100%;
  436. display: block;
  437. }
  438. /* 弹窗主要内容区域 */
  439. .main-content {
  440. padding: 30rpx;
  441. }
  442. /* 标题和地址区域 */
  443. .header {
  444. margin-bottom: 30rpx;
  445. }
  446. .modal-title {
  447. font-size: 36rpx;
  448. font-weight: bold;
  449. color: #333;
  450. }
  451. .modal-address {
  452. font-size: 26rpx;
  453. color: #666;
  454. margin-top: 10rpx;
  455. display: flex;
  456. align-items: center;
  457. }
  458. /* 描述文本样式 */
  459. .modal-description {
  460. font-size: 28rpx;
  461. line-height: 1.8;
  462. color: #444;
  463. margin-bottom: 30rpx;
  464. }
  465. /* 详情列表样式 */
  466. .detail-list {
  467. border-top: 1rpx solid #eee;
  468. padding-top: 20rpx;
  469. }
  470. .detail-item {
  471. display: flex;
  472. justify-content: space-between;
  473. padding: 20rpx 0;
  474. border-bottom: 1rpx solid #f5f5f5;
  475. }
  476. .detail-label {
  477. color: #666;
  478. font-size: 28rpx;
  479. }
  480. /* 详情值容器样式 */
  481. .detail-value-container {
  482. display: flex;
  483. align-items: center;
  484. }
  485. /* 门票相关样式 */
  486. .free-text {
  487. color: #07c160;
  488. font-weight: bold;
  489. }
  490. .fee-text {
  491. color: #e64340;
  492. }
  493. .free-badge {
  494. background: #07c160;
  495. color: white;
  496. padding: 4rpx 12rpx;
  497. border-radius: 20rpx;
  498. font-size: 24rpx;
  499. margin-left: 10rpx;
  500. }
  501. .highlight-item {
  502. background: #f8f8f8;
  503. border-radius: 10rpx;
  504. padding: 20rpx;
  505. margin: 15rpx -20rpx;
  506. }
  507. /* 底部操作栏样式 */
  508. .action-bar {
  509. position: absolute;
  510. bottom: 0;
  511. left: 0;
  512. right: 0;
  513. display: flex;
  514. padding: 20rpx;
  515. box-sizing: border-box;
  516. background: linear-gradient(to top, #fff 0%, rgba(255,255,255,0.8) 50%, transparent 100%);
  517. backdrop-filter: blur(10rpx);
  518. border-top: 1rpx solid #eee;
  519. }
  520. .nav-btn, .close-btn {
  521. flex: 1;
  522. margin: 0 10rpx;
  523. height: 80rpx;
  524. line-height: 80rpx;
  525. border-radius: 40rpx;
  526. font-size: 28rpx;
  527. font-weight: 500;
  528. }
  529. .nav-btn {
  530. background: #D32F2F;
  531. color: white;
  532. }
  533. .close-btn {
  534. background: #f5f5f5;
  535. color: #666;
  536. }
  537. /* 顶部关闭图标样式 */
  538. .top-close {
  539. position: absolute;
  540. top: 30rpx;
  541. right: 30rpx;
  542. width: 60rpx;
  543. height: 60rpx;
  544. border-radius: 50%;
  545. background: rgba(0,0,0,0.5);
  546. display: flex;
  547. justify-content: center;
  548. align-items: center;
  549. z-index: 1;
  550. }
  551. .close-icon {
  552. color: white;
  553. font-size: 40rpx;
  554. }
  555. /* 全屏VR样式 */
  556. .fullscreen-vr {
  557. position: fixed;
  558. top: 0;
  559. left: 0;
  560. width: 100%;
  561. height: 100vh;
  562. z-index: 9999;
  563. }
  564. .vr-mask {
  565. position: fixed;
  566. top: 0;
  567. left: 0;
  568. width: 100%;
  569. height: 100%;
  570. background: rgba(0,0,0,0.8);
  571. z-index: 9998;
  572. }
  573. .close-vr-btn {
  574. position: absolute;
  575. top: 40rpx;
  576. right: 40rpx;
  577. width: 80rpx;
  578. height: 80rpx;
  579. background: rgba(0,0,0,0.5);
  580. border-radius: 50%;
  581. display: flex;
  582. justify-content: center;
  583. align-items: center;
  584. z-index: 10000;
  585. }
  586. .close-vr-btn .icon {
  587. color: #fff;
  588. font-size: 50rpx;
  589. line-height: 1;
  590. }
  591. .fullscreen-vr .vr-tip {
  592. position: absolute;
  593. bottom: 60rpx;
  594. left: 0;
  595. right: 0;
  596. text-align: center;
  597. color: #fff;
  598. font-size: 28rpx;
  599. background: rgba(0,0,0,0.5);
  600. padding: 16rpx;
  601. border-radius: 40rpx;
  602. width: 300rpx;
  603. margin: 0 auto;
  604. }
  605. /* VR容器样式 */
  606. .vr-container {
  607. margin: 30rpx 0;
  608. padding: 0 20rpx;
  609. }
  610. .vr-scroll {
  611. width: 100%;
  612. white-space: nowrap;
  613. margin-top: 20rpx;
  614. }
  615. .vr-list {
  616. display: inline-flex;
  617. }
  618. .vr-card {
  619. display: inline-block;
  620. width: 280rpx;
  621. margin-right: 20rpx;
  622. border-radius: 12rpx;
  623. overflow: hidden;
  624. box-shadow: 0 4rpx 12rpx rgba(0,0,0,0.1);
  625. background: #fff;
  626. }
  627. .vr-image {
  628. width: 400rpx;
  629. height: 300rpx;
  630. }
  631. .vr-info {
  632. padding: 16rpx;
  633. }
  634. .vr-title {
  635. font-size: 28rpx;
  636. font-weight: bold;
  637. display: block;
  638. white-space: nowrap;
  639. overflow: hidden;
  640. text-overflow: ellipsis;
  641. }
  642. .vr-desc {
  643. font-size: 24rpx;
  644. color: #888;
  645. display: block;
  646. }
  647. /* 增强版VR模态框样式 */
  648. .vr-modal {
  649. position: fixed;
  650. top: 0;
  651. left: 0;
  652. width: 100vw; /* 使用视窗单位确保全覆盖 */
  653. height: 100vh;
  654. background: #000; /* 改为黑色背景更沉浸 */
  655. z-index: 9999; /* 提高层级 */
  656. touch-action: pan-y pinch-zoom; /* 允许手势操作 */
  657. overflow: hidden;
  658. }
  659. /* 标题栏优化 */
  660. .modal-header {
  661. padding: 15rpx 25rpx;
  662. display: flex;
  663. justify-content: space-between;
  664. align-items: center;
  665. background: rgba(0,0,0,0.5); /* 半透明背景 */
  666. position: absolute;
  667. top: 0;
  668. left: 0;
  669. width: 100%;
  670. z-index: 100;
  671. backdrop-filter: blur(10rpx); /* 毛玻璃效果 */
  672. border-bottom: none;
  673. }
  674. .modal-title {
  675. font-size: 34rpx;
  676. font-weight: bold;
  677. color: #fff; /* 白色文字 */
  678. }
  679. /* 关闭按钮优化 */
  680. .close-btn {
  681. font-size: 50rpx; /* 放大关闭按钮 */
  682. color: #fff;
  683. padding: 0 30rpx;
  684. line-height: 1;
  685. }
  686. /* WebView容器增强 */
  687. .webview-container {
  688. position: absolute;
  689. top: 0;
  690. left: 0;
  691. width: 100%;
  692. height: 100%;
  693. padding-top: 80rpx; /* 给标题栏留空间 */
  694. }
  695. /* 响应式调整 */
  696. @media (min-width: 768px) {
  697. .vr-modal {
  698. max-width: 768px; /* 平板设备居中显示 */
  699. left: 50%;
  700. transform: translateX(-50%);
  701. }
  702. }
  703. /* 自定义导航栏样式 */
  704. .custom-navbar {
  705. position: fixed;
  706. top: 0;
  707. left: 0;
  708. width: 100%;
  709. height: 50px;
  710. background-color: #fff;
  711. display: flex;
  712. align-items: center;
  713. padding: 0 15px;
  714. box-shadow: 0 1px 6px rgba(0,0,0,0.1);
  715. z-index: 1000;
  716. }
  717. .navbar-back {
  718. display: flex;
  719. align-items: center;
  720. }
  721. .back-icon {
  722. width: 20px;
  723. height: 20px;
  724. margin-right: 5px;
  725. }
  726. .navbar-title {
  727. flex: 1;
  728. text-align: center;
  729. font-size: 16px;
  730. overflow: hidden;
  731. text-overflow: ellipsis;
  732. white-space: nowrap;
  733. }
  734. /* 地图容器相对定位 */
  735. .map-container {
  736. position: relative;
  737. width: 100%;
  738. height: 60vh; /* 与地图同高 */
  739. }
  740. /* 渐变遮罩层 */
  741. .map-fade {
  742. position: absolute;
  743. bottom: 0;
  744. left: 0;
  745. width: 100%;
  746. height: 80px; /* 渐变区域高度 */
  747. background: linear-gradient(
  748. to bottom,
  749. rgba(255,255,255,0) 0%,
  750. rgba(255,255,255,1) 100%
  751. );
  752. pointer-events: none; /* 防止遮挡地图交互 */
  753. }
  754. /* 内容容器添加负外边距 */
  755. .content-container {
  756. margin-top: -40px; /* 与渐变高度配合 */
  757. position: relative;
  758. z-index: 1;
  759. background: #fff; /* 确保背景色与渐变终点一致 */
  760. }
  761. /* pages/index/index.wxss */
  762. .dynamic-features {
  763. display: flex;
  764. flex-wrap: wrap;
  765. justify-content: space-between;
  766. margin: 30rpx;
  767. }
  768. .feature-item {
  769. border-radius: 16rpx;
  770. background: rgba(255, 255, 255, 0.8);
  771. backdrop-filter: blur(10rpx);
  772. display: flex;
  773. flex-direction: column;
  774. align-items: center;
  775. justify-content: center;
  776. padding: 20rpx;
  777. margin-bottom: 24rpx;
  778. box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.1);
  779. transition: all 0.3s ease;
  780. }
  781. .feature-item.large {
  782. width: 100%;
  783. height: 200rpx;
  784. }
  785. .feature-item.medium {
  786. width: 48%;
  787. height: 180rpx;
  788. }
  789. .feature-item.small {
  790. width: 30%;
  791. height: 150rpx;
  792. }
  793. .feature-icon {
  794. width: 80rpx;
  795. height: 80rpx;
  796. margin-bottom: 16rpx;
  797. }
  798. .feature-title {
  799. font-size: 28rpx;
  800. color: #D32F2F;
  801. font-weight: 500;
  802. }
  803. /* 动态特征网格样式 */
  804. .dynamic-features {
  805. display: grid;
  806. grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
  807. gap: 15px;
  808. padding: 15px;
  809. }
  810. .feature-item {
  811. display: flex;
  812. flex-direction: column;
  813. align-items: center;
  814. transition: all 0.3s ease;
  815. }
  816. .feature-item.large {
  817. grid-column: span 2;
  818. grid-row: span 2;
  819. }
  820. .feature-item.medium {
  821. grid-column: span 1;
  822. grid-row: span 1;
  823. }
  824. .feature-item.small {
  825. opacity: 0.8;
  826. transform: scale(0.9);
  827. }
  828. /* 根据布局类型调整的样式 */
  829. .map-focused .map-container {
  830. height: 60vh !important;
  831. }
  832. .feature-focused .dynamic-features {
  833. grid-template-columns: repeat(2, 1fr);
  834. }
  835. .vr-focused .vr-container {
  836. height: 50vh !important;
  837. }
  838. /* 容器布局 */
  839. .service-container {
  840. display: grid;
  841. grid-template-columns: 3fr 1fr; /* 3:1 列宽比例 */
  842. grid-template-rows: 1fr 1fr; /* 两行等高 */
  843. gap: 15rpx;
  844. padding: 20rpx;
  845. height: 500rpx; /* 固定高度 */
  846. }
  847. /* 主推荐项样式 */
  848. .main-item {
  849. grid-column: 1; /* 第一列 */
  850. grid-row: 1 / span 2; /* 跨两行 */
  851. }
  852. /* 侧边项样式 */
  853. .side-item {
  854. grid-column: 2; /* 第二列 */
  855. grid-row: auto; /* 自动行高 */
  856. }
  857. /* 相框基础样式 */
  858. .item-frame {
  859. width: 100%;
  860. height: 100%;
  861. border: 6rpx solid #ff4d4f;
  862. border-radius: 12rpx;
  863. padding: 20rpx;
  864. box-sizing: border-box;
  865. display: flex;
  866. flex-direction: column;
  867. align-items: center;
  868. justify-content: center;
  869. position: relative;
  870. background: #fff;
  871. }
  872. /* 主推荐项特殊样式 */
  873. .main-item .item-frame {
  874. border-width: 8rpx;
  875. box-shadow: 0 8rpx 24rpx rgba(255, 77, 79, 0.3);
  876. background: #fff9f9;
  877. }
  878. /* 图标容器 */
  879. .icon-container {
  880. margin-bottom: 20rpx;
  881. display: flex;
  882. justify-content: center;
  883. align-items: center;
  884. }
  885. /* 主推荐项图标 */
  886. .main-item .icon-container {
  887. width: 140rpx;
  888. height: 140rpx;
  889. }
  890. /* 侧边项图标 */
  891. .side-item .icon-container {
  892. width: 80rpx;
  893. height: 80rpx;
  894. }
  895. /* 图片样式 */
  896. .img {
  897. width: 100%;
  898. height: 100%;
  899. }
  900. /* 标题样式 */
  901. .title {
  902. font-size: 28rpx;
  903. color: #333;
  904. text-align: center;
  905. }
  906. /* 主推荐项标题 */
  907. .main-item .title {
  908. font-size: 36rpx;
  909. font-weight: bold;
  910. }
  911. /* 推荐标签 */
  912. .top-tag {
  913. position: absolute;
  914. top: 10rpx;
  915. right: 10rpx;
  916. background: #ff4d4f;
  917. color: white;
  918. padding: 4rpx 15rpx;
  919. border-radius: 20rpx;
  920. font-size: 24rpx;
  921. font-weight: bold;
  922. z-index: 10;
  923. transform: rotate(15deg);
  924. box-shadow: 0 4rpx 8rpx rgba(0, 0, 0, 0.2);
  925. }