| | |
| | | <template> |
| | | <view class="page"> |
| | | <view class="safe-top" /> |
| | | |
| | | <scroll-view class="scroll" scroll-y> |
| | | <!-- 顶部 Banner:放入滚动区域,随页面一起滚动,不固定在顶部 --> |
| | | <view class="hero-section"> |
| | | <view class="bg-img"> |
| | | <view class="hero-content"> |
| | | <!-- 预留:如后续需要可在此放 logo 或简短提示 --> |
| | | </view> |
| | | <view class="hero-wave"></view> |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- 快捷入口 --> |
| | | <view class="quick-section"> |
| | | <up-grid :border="false" col="4"> |
| | |
| | | |
| | | <style scoped lang="scss"> |
| | | .page { |
| | | min-height: 100vh; |
| | | background: #f5f6fa; |
| | | background: #f6f7fb; |
| | | min-height: 100vh; |
| | | // padding: 12px; |
| | | /* 为所有设备设置基础padding-top(包含安全区) */ |
| | | padding-top: calc(env(safe-area-inset-top) + 30px); |
| | | position: relative; |
| | | |
| | | /* 为安卓设备设置更大的顶部内边距 */ |
| | | /* #ifdef APP-PLUS && !MP && !H5 */ |
| | | padding-top: calc(env(safe-area-inset-top) + 45px); |
| | | /* #endif */ |
| | | |
| | | /* H5和小程序平台的通用样式 */ |
| | | /* #ifdef H5 || MP */ |
| | | padding-top: calc(env(safe-area-inset-top) + 30px); |
| | | /* #endif */ |
| | | &::before { |
| | | content: ""; |
| | | position: fixed; |
| | | top: 0; |
| | | left: 0; |
| | | right: 0; |
| | | bottom: 0; |
| | | background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><pattern id="dots" width="24" height="24" patternUnits="userSpaceOnUse"><circle cx="12" cy="12" r="1" fill="rgba(41, 121, 255, 0.02)"/></pattern></defs><rect width="100" height="100" fill="url(%23dots)"/></svg>'); |
| | | pointer-events: none; |
| | | z-index: -1; |
| | | } |
| | | |
| | | &::after { |
| | | content: ""; |
| | | position: fixed; |
| | | top: 0; |
| | | left: 0; |
| | | right: 0; |
| | | bottom: 0; |
| | | background: radial-gradient( |
| | | circle at 20% 80%, |
| | | rgba(41, 121, 255, 0.02) 0%, |
| | | transparent 55% |
| | | ), |
| | | radial-gradient( |
| | | circle at 80% 20%, |
| | | rgba(156, 39, 176, 0.015) 0%, |
| | | transparent 55% |
| | | ); |
| | | pointer-events: none; |
| | | z-index: -1; |
| | | } |
| | | } |
| | | .hero-section { |
| | | margin: 0 12px; |
| | | margin-bottom: 12px; |
| | | animation: fadeInUp 0.6s ease-out 0.1s both; |
| | | } |
| | | |
| | | .bg-img { |
| | | width: 100%; |
| | | height: 9.25rem; |
| | | background-image: url("../static/images/banner/backview.png"); |
| | | background-size: cover; |
| | | border-radius: 14px; |
| | | position: relative; |
| | | overflow: hidden; |
| | | box-shadow: 0 10px 26px rgba(17, 24, 39, 0.08); |
| | | |
| | | &::before { |
| | | content: ""; |
| | | position: absolute; |
| | | top: -50%; |
| | | left: -50%; |
| | | width: 200%; |
| | | height: 200%; |
| | | background: conic-gradient( |
| | | from 0deg, |
| | | transparent, |
| | | rgba(255, 255, 255, 0.1), |
| | | transparent, |
| | | rgba(255, 255, 255, 0.05), |
| | | transparent |
| | | ); |
| | | animation: rotate 20s linear infinite; |
| | | } |
| | | |
| | | &::after { |
| | | content: ""; |
| | | position: absolute; |
| | | top: 0; |
| | | right: 0; |
| | | width: 7.5rem; |
| | | height: 7.5rem; |
| | | background: radial-gradient( |
| | | circle, |
| | | rgba(255, 255, 255, 0.15) 0%, |
| | | transparent 70% |
| | | ); |
| | | border-radius: 50%; |
| | | transform: translate(2.5rem, -2.5rem); |
| | | } |
| | | } |
| | | |
| | | .hero-content { |
| | | position: relative; |
| | | z-index: 1; |
| | | |
| | | padding: 14px 14px 18px 14px; |
| | | margin: 0 12px; |
| | | height: 100%; |
| | | } |
| | | .hero-wave { |
| | | height: 2.75rem; |
| | | } |
| | | |
| | | .safe-top { |