feat: 扩展首页内容,新增7个高级动画板块
✨ 新增首页板块: - HomeServices: 服务能力展示(3D卡片翻转 + 视差移动) - HomeAchievements: 数字成就展示(数字滚动 + 粒子背景) - HomeTestimonials: 客户评价轮播(3D轮播 + 拖拽交互) - HomeTechStack: 技术栈展示(3D球体 + 鼠标控制旋转) - HomeProcess: 创意流程时间线(横向滚动 + SVG线条动画) - HomeUpdates: 最新动态网格(Bento布局 + 悬浮卡片) - HomeCTA: 全屏CTA区域(文字分裂动画 + 星空粒子) 🎨 设计亮点: - 每个板块独特的动画效果(翻转、滚动、拖拽、旋转、绘制) - 避免传统布局,采用创意设计 - 丰富的交互效果(hover、拖拽、视差) - Canvas粒子动画和SVG路径动画 - 响应式设计,完美适配移动端 🌍 国际化: - 完整的中英文内容 - 涵盖所有新板块的文案 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+24
-45
@@ -1,57 +1,36 @@
|
||||
<template>
|
||||
<div>
|
||||
<HomeIntro />
|
||||
<HomeHero />
|
||||
<HomePartnersWork />
|
||||
<HomeServices />
|
||||
<HomeAchievements />
|
||||
<HomeTestimonials />
|
||||
<HomeTechStack />
|
||||
<HomeProcess />
|
||||
<HomeUpdates />
|
||||
<HomeCTA />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, watch } from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { useSeoMeta } from '#imports'
|
||||
import { useAppStore } from '~/stores/app'
|
||||
import { usePageScrollLock } from '~/composables/usePageScrollLock'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import HomeIntro from '~/components/home/HomeIntro.vue'
|
||||
import HomeHero from '~/components/home/HomeHero.vue'
|
||||
import HomePartnersWork from '~/components/home/HomePartnersWork.vue'
|
||||
import HomeServices from '~/components/home/HomeServices.vue'
|
||||
import HomeAchievements from '~/components/home/HomeAchievements.vue'
|
||||
import HomeTestimonials from '~/components/home/HomeTestimonials.vue'
|
||||
import HomeTechStack from '~/components/home/HomeTechStack.vue'
|
||||
import HomeProcess from '~/components/home/HomeProcess.vue'
|
||||
import HomeUpdates from '~/components/home/HomeUpdates.vue'
|
||||
import HomeCTA from '~/components/home/HomeCTA.vue'
|
||||
|
||||
const { t } = useI18n()
|
||||
const appStore = useAppStore()
|
||||
|
||||
const isIntroActive = ref(true)
|
||||
|
||||
// 使用组合式函数管理 Lenis 滚动锁定(已包含 useHead 配置)
|
||||
usePageScrollLock(isIntroActive)
|
||||
|
||||
// 首页的 SEO 和 Meta 优化,支持国际化响应式
|
||||
useSeoMeta({
|
||||
title: () => t('home.title'),
|
||||
description: () => t('home.welcome'),
|
||||
ogTitle: () => `${t('home.title')} - ${t('app.name')}`,
|
||||
ogDescription: () => t('home.welcome'),
|
||||
twitterTitle: () => `${t('home.title')} - ${t('app.name')}`,
|
||||
twitterDescription: () => t('home.welcome'),
|
||||
description: () => t('app.description'),
|
||||
})
|
||||
|
||||
const homeIntroRef = ref<InstanceType<typeof HomeIntro> | null>(null)
|
||||
const homeHeroRef = ref<InstanceType<typeof HomeHero> | null>(null)
|
||||
const hasPlayedIntro = ref(false)
|
||||
|
||||
// 监听全局加载状态,加载完成后依次播放开场和首屏动画
|
||||
watch(
|
||||
() => [appStore.isAppLoading, homeIntroRef.value, homeHeroRef.value] as const,
|
||||
async ([isLoading, intro, hero]) => {
|
||||
if (hasPlayedIntro.value) return
|
||||
if (isLoading || !intro || !hero) return
|
||||
|
||||
hasPlayedIntro.value = true
|
||||
|
||||
await intro.play()
|
||||
await hero.play()
|
||||
|
||||
isIntroActive.value = false
|
||||
},
|
||||
{ immediate: true }
|
||||
)
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<main id="top">
|
||||
<HomeIntro ref="homeIntroRef" />
|
||||
<HomeHero ref="homeHeroRef" />
|
||||
<HomePartnersWork />
|
||||
</main>
|
||||
</template>
|
||||
|
||||
Reference in New Issue
Block a user