Compare commits

...

2 Commits

Author SHA1 Message Date
lyf
0ce38b390e 修复首页来馆按钮联动动效
Some checks failed
CI / verify (push) Has been cancelled
2026-07-07 00:36:26 +08:00
lyf
0d2cc5181d 还原首页来馆组件原始样式 2026-07-07 00:23:49 +08:00
2 changed files with 24 additions and 101 deletions

View File

@@ -38,7 +38,7 @@
</view> </view>
<!-- #endif --> <!-- #endif -->
</template> </template>
<view v-else class="outdoor-map-bg" :class="`variant-${props.outdoorVariant}`"> <view v-else class="outdoor-map-bg">
<TencentMap <TencentMap
class="outdoor-map" class="outdoor-map"
:active-floor="activeFloor" :active-floor="activeFloor"
@@ -793,33 +793,6 @@ defineExpose({
background: #f6f8f5; background: #f6f8f5;
} }
.outdoor-map-bg.variant-entrance {
animation: outdoor-entrance-focus 0.38s ease-out both;
}
.outdoor-map-bg.variant-entrance::after {
content: '';
position: absolute;
inset: 0;
pointer-events: none;
background:
radial-gradient(circle at 52% 60%, rgba(224, 225, 0, 0.16), rgba(224, 225, 0, 0) 32%),
linear-gradient(180deg, rgba(0, 0, 0, 0) 48%, rgba(0, 0, 0, 0.1) 100%);
z-index: 1;
}
@keyframes outdoor-entrance-focus {
from {
opacity: 0.72;
transform: scale(1.018);
}
to {
opacity: 1;
transform: scale(1);
}
}
.indoor-platform-fallback { .indoor-platform-fallback {
position: absolute; position: absolute;
inset: 0; inset: 0;

View File

@@ -116,7 +116,7 @@
> >
<view <view
class="guide-quick-action" class="guide-quick-action"
:class="{ active: is3DMode }" :class="{ active: guideQuickActiveAction === 'indoor' }"
@tap="handleMoreRouteGuide" @tap="handleMoreRouteGuide"
> >
<view class="guide-quick-icon indoor"> <view class="guide-quick-icon indoor">
@@ -127,7 +127,7 @@
</view> </view>
<view <view
class="guide-quick-action" class="guide-quick-action"
:class="{ active: guideOutdoorState === 'entrance' && !is3DMode }" :class="{ active: guideQuickActiveAction === 'arrival' }"
@tap="handleMoreOutdoorNav" @tap="handleMoreOutdoorNav"
> >
<view class="guide-quick-icon arrival"> <view class="guide-quick-icon arrival">
@@ -137,7 +137,7 @@
</view> </view>
<view <view
class="guide-quick-action" class="guide-quick-action"
:class="{ active: isExplainQuickActionActive }" :class="{ active: guideQuickActiveAction === 'explain' }"
@tap="handleExplainQuickTap" @tap="handleExplainQuickTap"
> >
<view class="guide-quick-icon explain"> <view class="guide-quick-icon explain">
@@ -649,7 +649,10 @@ const showGuideFloatingActions = computed(() => (
&& (!showGuideHomeDock.value || !homeSearchExpanded.value) && (!showGuideHomeDock.value || !homeSearchExpanded.value)
)) ))
const isExplainQuickActionActive = computed(() => currentTab.value === 'explain') const guideQuickActiveAction = computed<'indoor' | 'arrival' | 'explain'>(() => {
if (currentTab.value === 'explain') return 'explain'
return is3DMode.value ? 'indoor' : 'arrival'
})
const toRoutePointOption = (target: GuideRouteTarget): RoutePointOption => ({ const toRoutePointOption = (target: GuideRouteTarget): RoutePointOption => ({
poiId: target.poiId, poiId: target.poiId,
@@ -1333,24 +1336,7 @@ const closeOutdoorNavPanel = () => {
clearOutdoorNavState() clearOutdoorNavState()
} }
const showOutdoorEntrancePreview = () => {
showOutdoorNavPanel.value = false
showRoutePlanner.value = false
selectedGuidePoi.value = null
isPoiCardCollapsed.value = false
isSimulatingRoute.value = false
clearRoutePreviewState()
clearOutdoorNavState()
is3DMode.value = false
guideOutdoorState.value = 'entrance'
}
const handleMoreOutdoorNav = () => { const handleMoreOutdoorNav = () => {
if (!isOutdoorGuidePanelEnabled) {
showOutdoorEntrancePreview()
return
}
openOutdoorNavPanel() openOutdoorNavPanel()
} }
@@ -2069,15 +2055,22 @@ const handleExplainBack = () => {
border-radius: 8px; border-radius: 8px;
box-shadow: 0 12px 28px rgba(0, 0, 0, 0.2); box-shadow: 0 12px 28px rgba(0, 0, 0, 0.2);
backdrop-filter: blur(10px); backdrop-filter: blur(10px);
transition:
background 0.18s ease,
border-color 0.18s ease,
box-shadow 0.18s ease,
transform 0.16s ease;
} }
.guide-quick-action.active { .guide-quick-action.active {
background: var(--museum-accent); background: var(--museum-accent);
border-color: var(--museum-accent); border-color: var(--museum-accent);
box-shadow: 0 14px 30px rgba(0, 0, 0, 0.24), 0 0 0 1px rgba(224, 225, 0, 0.35);
animation: guide-quick-active-in 0.22s ease-out both;
} }
.guide-quick-action:active { .guide-quick-action:active {
transform: translateY(1px); transform: translateY(1px) scale(0.98);
} }
.guide-quick-icon { .guide-quick-icon {
@@ -2174,17 +2167,14 @@ const handleExplainBack = () => {
color: #0a0b08; color: #0a0b08;
} }
.guide-quick-action.active .guide-quick-pin::before { @keyframes guide-quick-active-in {
content: ''; from {
position: absolute; transform: scale(0.96);
left: -7px; }
top: -7px;
width: 24px; to {
height: 24px; transform: scale(1);
border: 1.5px solid currentColor; }
border-radius: 50%;
opacity: 0;
animation: entrance-pin-pulse 1.6s ease-out infinite;
} }
.route-sim-top-pill { .route-sim-top-pill {
@@ -2276,8 +2266,6 @@ const handleExplainBack = () => {
background: rgba(255, 255, 255, 0.96); background: rgba(255, 255, 255, 0.96);
border: 1px solid #e5e6de; border: 1px solid #e5e6de;
border-radius: 12px; border-radius: 12px;
box-shadow: 0 10px 24px rgba(0, 0, 0, 0.14);
animation: entrance-tip-in 0.34s ease-out both;
z-index: 45; z-index: 45;
} }
@@ -2532,7 +2520,6 @@ const handleExplainBack = () => {
border: 1px solid #ffffff; border: 1px solid #ffffff;
border-radius: 16px; border-radius: 16px;
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.08); box-shadow: 0 3px 10px rgba(0, 0, 0, 0.08);
animation: entrance-card-in 0.42s cubic-bezier(0.2, 0.82, 0.2, 1) both;
z-index: 45; z-index: 45;
} }
@@ -2594,41 +2581,4 @@ const handleExplainBack = () => {
color: var(--museum-accent); color: var(--museum-accent);
} }
@keyframes entrance-tip-in {
from {
opacity: 0;
transform: translate3d(-10px, 8px, 0) scale(0.96);
}
to {
opacity: 1;
transform: translate3d(0, 0, 0) scale(1);
}
}
@keyframes entrance-card-in {
from {
opacity: 0;
transform: translate3d(0, 28px, 0);
}
to {
opacity: 1;
transform: translate3d(0, 0, 0);
}
}
@keyframes entrance-pin-pulse {
0% {
opacity: 0.42;
transform: scale(0.68);
}
72%,
100% {
opacity: 0;
transform: scale(1.36);
}
}
</style> </style>