diff --git a/frontend/src/App.vue b/frontend/src/App.vue
index 1df1c16..e27b114 100644
--- a/frontend/src/App.vue
+++ b/frontend/src/App.vue
@@ -8,9 +8,6 @@ import InAppBrowserPrompt from './components/InAppBrowserPrompt.vue'
import AdminLayout from './layouts/AdminLayout.vue'
import AppLayout from './layouts/AppLayout.vue'
-/** 移动端从详情返回时保留列表状态与滚动位置 */
-const mobileKeepAliveIncludes = ['MobileHomeView']
-
const route = useRoute()
const layout = computed(() => {
if (route.path === '/m' || route.path.startsWith('/m/')) {
@@ -26,11 +23,7 @@ const layout = computed(() => {
-
-
-
-
-
+
diff --git a/frontend/src/features/listings/views/MobileHomeView.css b/frontend/src/features/listings/views/MobileHomeView.css
index 3746834..e96878f 100644
--- a/frontend/src/features/listings/views/MobileHomeView.css
+++ b/frontend/src/features/listings/views/MobileHomeView.css
@@ -1,13 +1,27 @@
.mobile-shell {
width: 100%;
max-width: 430px;
- min-height: 100vh;
+ height: 100dvh;
+ height: 100vh;
margin: 0 auto;
- padding-bottom: calc(72px + env(safe-area-inset-bottom));
+ display: flex;
+ flex-direction: column;
+ overflow: hidden;
background: #f6f8fb;
color: #17233d;
}
+/* 列表独立滚动:与详情页 window 滚动隔离,返回时恢复 scrollTop */
+.mobile-scroll {
+ flex: 1;
+ min-height: 0;
+ overflow-x: hidden;
+ overflow-y: auto;
+ -webkit-overflow-scrolling: touch;
+ overscroll-behavior-y: contain;
+ padding-bottom: calc(72px + env(safe-area-inset-bottom));
+}
+
.mobile-hero {
padding: 12px 12px 10px;
background: #fff;
diff --git a/frontend/src/features/listings/views/MobileHomeView.vue b/frontend/src/features/listings/views/MobileHomeView.vue
index 7fc04cd..5204947 100644
--- a/frontend/src/features/listings/views/MobileHomeView.vue
+++ b/frontend/src/features/listings/views/MobileHomeView.vue
@@ -1,15 +1,6 @@