From 14c4ec322f41d032afb0a4ed0d6ffe5329427f85 Mon Sep 17 00:00:00 2001 From: ivan Date: Sun, 8 Feb 2026 16:57:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/Home.vue | 381 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 346 insertions(+), 35 deletions(-) diff --git a/src/views/Home.vue b/src/views/Home.vue index 9d5c558..4e6d1a9 100644 --- a/src/views/Home.vue +++ b/src/views/Home.vue @@ -1,31 +1,116 @@ @@ -111,15 +215,23 @@ onUnmounted(() => { overflow-y: auto; overflow-x: hidden; -webkit-overflow-scrolling: touch; + /* 占满剩余视口高度,内容多时在内部滚动 */ + min-height: calc(100vh - 64px - 48px - 32px); max-height: calc(100vh - 64px - 48px - 32px); } +/* 卡片最小宽度与 MarketCard 一致 310px;auto-fill 按可用宽度自动 1~4 列,避免第三列被裁 */ .home-list { width: 100%; - display: flex; - flex-wrap: wrap; + display: grid; gap: 20px; padding-bottom: 8px; + grid-template-columns: repeat(auto-fill, minmax(310px, 1fr)); +} + +.home-list > * { + min-width: 0; + width: 100%; } .load-more-footer { @@ -136,7 +248,7 @@ onUnmounted(() => { bottom: 0; left: 0; right: 0; - height: 1px; + height: 8px; pointer-events: none; opacity: 0; } @@ -152,10 +264,15 @@ onUnmounted(() => { font-size: 14px; } -/* When only one column fits */ -@media (max-width: 600px) { - .home-list > div { - flex: 1 1 100%; +.load-more-btn { + text-transform: none; + margin-top: 4px; +} + +/* 大屏最多 4 列,避免过宽时出现 5 列以上 */ +@media (min-width: 1320px) { + .home-list { + grid-template-columns: repeat(4, minmax(310px, 1fr)); } } @@ -215,4 +332,198 @@ onUnmounted(() => { grid-template-columns: 1fr; } } + +/* Footer */ +.home-page { + display: flex; + flex-direction: column; + min-height: 100vh; +} + +.home-footer { + width: 100%; + background-color: #374151; + color: rgba(255, 255, 255, 0.85); + margin-top: auto; + padding: 48px 24px 32px; +} + +.footer-inner { + max-width: 1200px; + margin: 0 auto; +} + +.footer-top { + display: flex; + flex-wrap: wrap; + gap: 48px; + padding-bottom: 32px; + border-bottom: 1px solid rgba(255, 255, 255, 0.12); +} + +.footer-brand { + flex-shrink: 0; +} + +.footer-logo { + display: flex; + align-items: center; + gap: 10px; + margin-bottom: 8px; +} + +.logo-mark { + display: inline-flex; + align-items: center; + justify-content: center; + width: 36px; + height: 36px; + background: rgba(255, 255, 255, 0.15); + color: #fff; + font-weight: 700; + font-size: 18px; + border-radius: 6px; +} + +.logo-text { + font-size: 1.25rem; + font-weight: 600; + color: #fff; +} + +.footer-slogan { + font-size: 0.875rem; + color: rgba(255, 255, 255, 0.7); + margin: 0; +} + +.footer-links-row { + display: flex; + gap: 64px; + flex-wrap: wrap; +} + +.footer-col-title { + font-size: 0.75rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.05em; + color: rgba(255, 255, 255, 0.9); + margin: 0 0 12px 0; + padding-bottom: 8px; + border-bottom: 1px solid rgba(255, 255, 255, 0.2); +} + +.footer-link-list { + list-style: none; + margin: 0; + padding: 0; +} + +.footer-link-list li { + margin-bottom: 6px; +} + +.footer-link-list a { + color: rgba(255, 255, 255, 0.75); + text-decoration: none; + font-size: 0.875rem; +} + +.footer-link-list a:hover { + color: #fff; +} + +.footer-bottom { + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + gap: 16px; + padding-top: 24px; + padding-bottom: 24px; +} + +.footer-legal-links { + font-size: 0.8125rem; +} + +.footer-legal-links a { + color: rgba(255, 255, 255, 0.75); + text-decoration: none; +} + +.footer-legal-links a:hover { + color: #fff; +} + +.footer-legal-links .sep { + margin: 0 8px; + color: rgba(255, 255, 255, 0.4); +} + +.footer-lang-social { + display: flex; + align-items: center; + gap: 16px; +} + +.footer-lang-select { + max-width: 120px; +} + +.footer-lang-select :deep(.v-field) { + background: rgba(255, 255, 255, 0.08); + color: #fff; + font-size: 0.875rem; +} + +.footer-social-icons { + display: flex; + gap: 12px; + color: rgba(255, 255, 255, 0.8); +} + +.footer-social-icons .v-icon { + cursor: pointer; +} + +.footer-social-icons .v-icon:hover { + color: #fff; +} + +.footer-disclaimer { + font-size: 0.75rem; + line-height: 1.5; + color: rgba(255, 255, 255, 0.6); + margin: 0; + max-width: 720px; +} + +.footer-disclaimer a { + color: rgba(255, 255, 255, 0.85); + text-decoration: underline; +} + +.footer-disclaimer a:hover { + color: #fff; +} + +@media (max-width: 600px) { + .home-footer { + padding: 32px 16px 24px; + } + .footer-top { + flex-direction: column; + gap: 32px; + padding-bottom: 24px; + } + .footer-links-row { + gap: 32px; + } + .footer-bottom { + flex-direction: column; + align-items: flex-start; + } +}