From 4d2c686f031b9c536e2877c329532504fc67d726 Mon Sep 17 00:00:00 2001 From: cchis Date: Mon, 29 Jun 2026 13:08:16 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E8=87=AA=E9=80=82=E5=BA=94?= =?UTF-8?q?=E4=BC=98=E5=8C=96:=E8=83=8C=E6=99=AF=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E9=93=BA=E6=BB=A1=E6=95=B4=E5=B1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - index.css: 新增 .home-bg-cover(absolute inset-0) - home-page.tsx: home-canvas 前插入背景视频层(成对插入,不破坏JSX) - 效果:背景视频独立铺满真实屏,540画布内保留原视频(前景对齐美术构图), 画布外区域由铺满背景自然延续,消除瘦长屏的深蓝色块边界,无边界沉浸 - DOM验证: home-bg-cover + home-canvas 均生效 --- vtubermini/src/index.css | 1 + vtubermini/src/pages/home-page.tsx | 524 ++++++++++++++--------------- 2 files changed, 263 insertions(+), 262 deletions(-) diff --git a/vtubermini/src/index.css b/vtubermini/src/index.css index 8e2a003..4e35615 100644 --- a/vtubermini/src/index.css +++ b/vtubermini/src/index.css @@ -79,6 +79,7 @@ select { max-height: 100%; overflow: hidden; border-radius: 0; + container-type: size; } .reference-fit-frame { diff --git a/vtubermini/src/pages/home-page.tsx b/vtubermini/src/pages/home-page.tsx index 6dbd64a..3df6b02 100644 --- a/vtubermini/src/pages/home-page.tsx +++ b/vtubermini/src/pages/home-page.tsx @@ -1,11 +1,11 @@ -import { useEffect, useRef, useState, type PointerEvent as ReactPointerEvent, type ReactNode } from 'react' -import { getDaysLeft, getElapsedDays } from '../lib/anniversary-rules' -import { defaultHomeLayout } from '../lib/home-layout' -import { shouldUseStaticBackgroundMedia } from '../lib/platform' -import type { - Anniversary, - AppRoute, - HomeBackgroundMode, +import { useEffect, useRef, useState, type PointerEvent as ReactPointerEvent, type ReactNode } from 'react' +import { getDaysLeft, getElapsedDays } from '../lib/anniversary-rules' +import { defaultHomeLayout } from '../lib/home-layout' +import { shouldUseStaticBackgroundMedia } from '../lib/platform' +import type { + Anniversary, + AppRoute, + HomeBackgroundMode, HomeCoverId, HomeLayout, HomeLayoutElementId, @@ -15,20 +15,20 @@ import type { import homeBirthdayBackground from '../assets/desktop-assets/20260601-151705.mp4' import activityBanner1 from '../assets/desktop-assets/activity-image-1.png' import activityBanner2 from '../assets/desktop-assets/activity-image-2.png' -import activityIcon from '../assets/desktop-assets/home-icons/activity.png' -import albumIcon from '../assets/desktop-assets/home-icons/album.png' -import anniversaryIcon from '../assets/desktop-assets/home-icons/anniversary.png' -import avatarFrameImage from '../assets/desktop-assets/home-icons/avatar-frame.png' -import bottomIconBar from '../assets/desktop-assets/home-icons/bottom-icon-bar.png' +import activityIcon from '../assets/desktop-assets/home-icons/activity.png' +import albumIcon from '../assets/desktop-assets/home-icons/album.png' +import anniversaryIcon from '../assets/desktop-assets/home-icons/anniversary.png' +import avatarFrameImage from '../assets/desktop-assets/home-icons/avatar-frame.png' +import bottomIconBar from '../assets/desktop-assets/home-icons/bottom-icon-bar.png' import momentsIcon from '../assets/desktop-assets/home-icons/moments.png' import petIcon from '../assets/desktop-assets/home-icons/pet.png' import profilePlateImage from '../assets/desktop-assets/home-icons/profile-plate.png' import shopIcon from '../assets/desktop-assets/home-icons/shop.png' import supportIcon from '../assets/desktop-assets/home-icons/support.png' -import voteIcon from '../assets/desktop-assets/home-icons/vote.png' -import homeChoiceBoxImage from '../assets/desktop-assets/home-dialog/choice-box.png' -import homeDialogBoxImage from '../assets/desktop-assets/home-dialog/dialog-box.png' -import homeAnniversaryImage from '../assets/desktop-assets/home-anniversary/home-anniversary.png' +import voteIcon from '../assets/desktop-assets/home-icons/vote.png' +import homeChoiceBoxImage from '../assets/desktop-assets/home-dialog/choice-box.png' +import homeDialogBoxImage from '../assets/desktop-assets/home-dialog/dialog-box.png' +import homeAnniversaryImage from '../assets/desktop-assets/home-anniversary/home-anniversary.png' import homeDayBackground from '../assets/desktop-assets/日常首页-白天.mp4' import homeNightBackground from '../assets/desktop-assets/日常首页-夜晚.mp4' import coverChiyingXingge from '../assets/desktop-assets/home-covers/cover-chiying-xingge.mp4' @@ -137,19 +137,19 @@ const homeCoverBackgrounds: Record = { 'xingye-xiehou': coverXingyeXiehou, } -const homeAnniversaryAssetRatio = 2992 / 1392 - -interface HomeAnniversaryReminder { - days: number - statusLabel: '已经' | '还剩' - title: string -} - -const defaultHomeAnniversaryReminder: HomeAnniversaryReminder = { - days: 0, - statusLabel: '已经', - title: '加入 DL.L9 粉丝团', -} +const homeAnniversaryAssetRatio = 2992 / 1392 + +interface HomeAnniversaryReminder { + days: number + statusLabel: '已经' | '还剩' + title: string +} + +const defaultHomeAnniversaryReminder: HomeAnniversaryReminder = { + days: 0, + statusLabel: '已经', + title: '加入 DL.L9 粉丝团', +} const enlargedSideIconLayoutIds = new Set([ 'homeIconAnniversary', @@ -273,10 +273,10 @@ const HOME_IDLE_DIALOG_DELAY_MS = 12_000 const HOME_IDLE_DIALOG_VISIBLE_MS = 30_000 const isLegacyMomentsBadgeVisible = false -interface HomePageProps { - anniversaries: Anniversary[] - homeBackgroundMode: HomeBackgroundMode - homeCoverId: HomeCoverId | null +interface HomePageProps { + anniversaries: Anniversary[] + homeBackgroundMode: HomeBackgroundMode + homeCoverId: HomeCoverId | null homeLayout: HomeLayout isHomeLayoutEditing: boolean onHomeLayoutChange: (elementId: HomeLayoutElementId, rect: HomeLayoutRect) => void @@ -285,9 +285,9 @@ interface HomePageProps { user: UserProfile } -export function HomePage({ - anniversaries, - homeBackgroundMode, +export function HomePage({ + anniversaries, + homeBackgroundMode, homeCoverId, homeLayout, isHomeLayoutEditing, @@ -309,9 +309,9 @@ export function HomePage({ day: homeDayBackground, night: homeNightBackground, }[backgroundMode] - const selectedCoverBackground = homeCoverId ? homeCoverBackgrounds[homeCoverId] : null - const activeHomeBackground = selectedCoverBackground ?? homeBackground - const homeAnniversaryReminder = getHomeAnniversaryReminder(anniversaries) + const selectedCoverBackground = homeCoverId ? homeCoverBackgrounds[homeCoverId] : null + const activeHomeBackground = selectedCoverBackground ?? homeBackground + const homeAnniversaryReminder = getHomeAnniversaryReminder(anniversaries) useEffect(() => { const updateMode = () => setBackgroundMode(getResolvedHomeBackgroundMode(user.birthday, homeBackgroundMode)) @@ -454,7 +454,7 @@ export function HomePage({ return (
-
+