diff --git a/src/components/RunwayLooks.astro b/src/components/RunwayLooks.astro index ddb93f8..9eeefe4 100644 --- a/src/components/RunwayLooks.astro +++ b/src/components/RunwayLooks.astro @@ -218,7 +218,7 @@ if (!yearChips.length) yearChips = yearSeed -
+
@@ -342,7 +342,7 @@ if (!yearChips.length) yearChips = yearSeed } .showschecks { - @apply list-none mt-[10px] mb-0 p-0 max-h-[280px] overflow-y-auto [scrollbar-width:thin]; + @apply list-none mt-[10px] mb-0 p-0 max-h-[280px] overflow-y-auto [scrollbar-width:thin] overscroll-contain; } .showschecks li { @apply flex items-center gap-2 py-[5px] text-[11.5px] uppercase tracking-[0.04em] text-black cursor-pointer select-none hover:bg-[#f6f6f6]; @@ -530,7 +530,7 @@ if (!yearChips.length) yearChips = yearSeed @apply bg-black text-white border-black; } .showsmodal-body { - @apply flex-1 min-h-0 overflow-y-auto px-2 py-1; + @apply flex-1 min-h-0 overflow-y-auto px-2 py-1 overscroll-contain; } .showsmodal-hint { @apply text-[10px] tracking-[0.22em] uppercase text-[#999] px-3 py-2; @@ -730,10 +730,12 @@ if (!yearChips.length) yearChips = yearSeed this.modalKeyword = "" this.modalLetter = "" this.modalOpen = true + document.body.style.overflow = "hidden" await this.modalLoadHot() }, closeBrandModal() { this.modalOpen = false + document.body.style.overflow = "" }, async modalLoadHot() { this.modalLoading = true @@ -789,6 +791,7 @@ if (!yearChips.length) yearChips = yearSeed confirmBrandModal() { this.selectedBrands = [...this.modalSelected] this.modalOpen = false + document.body.style.overflow = "" this.refreshFilter() }, diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index 7d31768..73663dd 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -8,29 +8,36 @@ import { toCodes } from 'astro:i18n'; import LanguageDetector from '@/components/LanguageDetector.astro' -const { - title = 'Portfolio Studio', - activeCategory = 'Shows', - activeNavTab, - activeThemePalette = null, -} = Astro.props; - const { locale, t, getRelativeLocaleUrl } = getI18n(Astro) // 脚本内(打包型 - {/* Top Footer Grid */} -
- - {/* Column 1: Brand & Manifesto */} -
-
- - Portfolio Studio - - - 2026 Edition - -
- -

- {t('Minimalist editorial portfolio documenting haute couture shows, backstage fittings, and street culture. Integrated with 2026 color forecast intelligence and AI palette generator.')} -

- - {/* Location Badge */} -
- Paris - • - Milan - • - Tokyo - • - New York -
-
- - {/* Column 3: Color Studio & Actions */} -
- - {t('Color Studio Tools')} - - -
- - - - {activeThemePalette && ( - - )} +
-
-
- - {/* Bottom Legal & Back To Top */} -
-
- {t('© 2026 PORTFOLIO STUDIO. ALL RIGHTS RESERVED.')} -
- -
- - {t('About')} - - - {t('Contact')} - - -
-
- -
- {t('© 2026 PORTFOLIO STUDIO. ALL RIGHTS RESERVED.')} -
- +
+ {t('© 2026 PORTFOLIO STUDIO. ALL RIGHTS RESERVED.')} +
+ @@ -263,4 +196,5 @@ const locales = toCodes(i18n!.locales); body { margin: 0; } + diff --git a/src/lib/routes.ts b/src/lib/routes.ts index 4300143..e1a6abf 100644 --- a/src/lib/routes.ts +++ b/src/lib/routes.ts @@ -16,11 +16,12 @@ export const ROUTES = { contact: '/contact', login: '/login', register: '/register', + runwayLooks: '/runway-looks', // 动态路由(工厂函数) item: (id: string | number) => `/items/${id}`, article: (id: string | number) => `/article?id=${id}`, articlesByBrand: (id: string | number) => `/articles?brand_id=${id}`, - runwayLooks: (id: string | number) => `/runway-looks/${id}`, + // runwayLooks: (id: string | number) => `/runway-looks/${id}`, } as const; /** 服务端:生成带 locale 前缀的完整 URL(依赖 astro:i18n,遵循 astro.config)。 */