index.vue 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. <template>
  2. <div class="relative w-full home-page">
  3. <!-- 导航栏 -->
  4. <HomeNav />
  5. <!-- 视差背景 -->
  6. <ParallaxBackground />
  7. <!-- 第一屏动画-->
  8. <TopAnime />
  9. <!--功能介绍区-->
  10. <section class="h-[100vh] flex items-center w-full relative" id="product" ref="productSection">
  11. <div class="py-20 container mx-auto px-6">
  12. <h2 class="text-4xl font-bold text-white mb-10">我们的特色</h2>
  13. <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8">
  14. <div
  15. v-for="(item, index) in products"
  16. :key="item.title"
  17. class="group bg-white/95 rounded-xl p-6 shadow-lg hover:shadow-xl transition-all duration-300 border border-gray-100 hover:border-blue-200 text-left product-card opacity-0 transform translate-y-10"
  18. :class="{'animate-fade-in-up': isProductVisible}"
  19. :style="{animationDelay: `${index * 0.15}s`}"
  20. >
  21. <div class="text-3xl mb-4 transition-all duration-300 group-hover:text-blue-600 group-hover:scale-110">
  22. <SvgIcon :name="item.icon" type="svg" size="2em" color="currentColor" />
  23. </div>
  24. <h3 class="text-xl font-semibold mb-2 text-gray-800 group-hover:text-blue-600">{{ item.title }}</h3>
  25. <p class="text-gray-600 group-hover:text-gray-700">{{ item.description }}</p>
  26. </div>
  27. </div>
  28. </div>
  29. </section>
  30. <!-- 第一个section - 主视觉区域 -->
  31. <!-- <section class="min-h-screen flex items-center">
  32. <div class="container mx-auto px-6">
  33. <div class="text-4xl font-bold text-white mb-4">声音AI平台</div>
  34. <div class="text-xl text-white/80 max-w-2xl mb-8">
  35. 专业的声音处理与分析工具,为您提供高质量的音频解决方案
  36. </div>
  37. <button
  38. class="bg-blue-600 hover:bg-blue-700 text-white px-6 py-3 rounded-lg font-medium transition"
  39. >
  40. 了解更多
  41. </button>
  42. </div>
  43. </section> -->
  44. <!-- 第二个section - 半透明过渡区 -->
  45. <!-- <section
  46. class="min-h-screen flex items-center bg-white/10 backdrop-blur-sm"
  47. >
  48. <div class="container mx-auto px-6">
  49. <div class="max-w-4xl">
  50. <div class="text-3xl font-bold text-white mb-6">
  51. 多人语音合成技术
  52. </div>
  53. <div class="text-lg text-white/80 mb-10">
  54. 我们的多人语音合成技术采用先进的AI算法,能够精准模拟多种声音特征和语气,为您的项目提供自然、流畅的语音合成服务。无论是需要多角色对话、情感丰富的表达,还是特定场景的语音应用,我们都能满足您的需求。
  55. </div>
  56. <div class="grid grid-cols-1 md:grid-cols-3 gap-6">
  57. <div class="bg-white/20 backdrop-blur p-6 rounded-lg">
  58. <div class="text-xl font-bold text-white mb-3">高质量合成</div>
  59. <div class="text-white/70">
  60. 采用最新深度学习技术,声音自然真实
  61. </div>
  62. </div>
  63. <div class="bg-white/20 backdrop-blur p-6 rounded-lg">
  64. <div class="text-xl font-bold text-white mb-3">多语言支持</div>
  65. <div class="text-white/70">支持中英文等多种语言的语音合成</div>
  66. </div>
  67. <div class="bg-white/20 backdrop-blur p-6 rounded-lg">
  68. <div class="text-xl font-bold text-white mb-3">个性化定制</div>
  69. <div class="text-white/70">可根据需求定制专属声音</div>
  70. </div>
  71. </div>
  72. </div>
  73. </div>
  74. </section> -->
  75. <!-- 第三个section - 白底部分 -->
  76. <!-- <section class="min-h-screen bg-white relative z-20 pt-24">
  77. <div class="container mx-auto px-6">
  78. <div class="max-w-4xl">
  79. <div class="text-3xl font-bold text-gray-800 mb-6">
  80. 先进的技术框架
  81. </div>
  82. <div class="text-lg text-gray-600 mb-8">
  83. 我们的平台采用最先进的技术栈构建,确保高效、稳定的性能表现。从前端到后端,每一个环节都经过精心优化,为用户提供极致的体验。
  84. </div>
  85. <div class="grid grid-cols-2 gap-4 mb-10">
  86. <div
  87. class="flex items-center space-x-3 bg-gray-100 p-4 rounded-lg"
  88. >
  89. <div class="w-3 h-3 bg-blue-500 rounded-full"></div>
  90. <div class="text-gray-800">先进的神经网络模型</div>
  91. </div>
  92. <div
  93. class="flex items-center space-x-3 bg-gray-100 p-4 rounded-lg"
  94. >
  95. <div class="w-3 h-3 bg-blue-500 rounded-full"></div>
  96. <div class="text-gray-800">高效的声音处理算法</div>
  97. </div>
  98. <div
  99. class="flex items-center space-x-3 bg-gray-100 p-4 rounded-lg"
  100. >
  101. <div class="w-3 h-3 bg-blue-500 rounded-full"></div>
  102. <div class="text-gray-800">低延迟实时合成</div>
  103. </div>
  104. <div
  105. class="flex items-center space-x-3 bg-gray-100 p-4 rounded-lg"
  106. >
  107. <div class="w-3 h-3 bg-blue-500 rounded-full"></div>
  108. <div class="text-gray-800">云端API服务</div>
  109. </div>
  110. </div>
  111. <button
  112. class="border border-blue-500 text-blue-500 hover:bg-blue-50 px-6 py-3 rounded-lg font-medium transition"
  113. >
  114. 技术详情
  115. </button>
  116. </div>
  117. </div>
  118. </section> -->
  119. </div>
  120. </template>
  121. <script setup lang="ts">
  122. import HomeNav from './components/nav.vue';
  123. import ParallaxBackground from './components/ParallaxBackground.vue';
  124. import TopAnime from './components/topAnime.vue';
  125. import { onMounted, onUnmounted, ref } from 'vue';
  126. import { useIntersectionObserver } from '@vueuse/core';
  127. // 产品区域的引用
  128. const productSection = ref(null);
  129. // 控制产品区域动画的变量
  130. const isProductVisible = ref(false);
  131. // 使用VueUse的useIntersectionObserver监听元素可见性
  132. useIntersectionObserver(
  133. productSection,
  134. ([{ isIntersecting }]) => {
  135. if (isIntersecting) {
  136. isProductVisible.value = true;
  137. }
  138. },
  139. { threshold: 0.3 } // 当元素30%进入视口时触发
  140. );
  141. const products = [
  142. {
  143. title: '智能语音合成',
  144. description: '提供自然流畅的语音合成服务,支持多种语言和音色选择。',
  145. icon: 'ai',
  146. },
  147. {
  148. title: '语音克隆',
  149. description:
  150. '只需少量语音样本,即可克隆出与原始声音高度相似的个性化语音模型。',
  151. icon: 'mark',
  152. },
  153. {
  154. title: '语音编辑',
  155. description:
  156. '强大的语音编辑工具,可调整语速、音调、情感等参数,满足专业需求。',
  157. icon: 'reader',
  158. },
  159. {
  160. title: '批量处理',
  161. description: '支持大规模文本批量转换为语音,提高工作效率,节省时间成本。',
  162. icon: 'fast',
  163. },
  164. ];
  165. // 页面进入时隐藏滚动条
  166. onMounted(() => {
  167. // 保存原始滚动条样式
  168. const originalStyle = document.body.style.overflow;
  169. // 隐藏滚动条
  170. document.documentElement.style.setProperty('scrollbar-width', 'none'); // Firefox
  171. document.body.style.overflow = 'auto'; // 保持可以滚动
  172. // 在组件销毁时恢复滚动条
  173. onUnmounted(() => {
  174. // 恢复原始滚动条样式
  175. document.body.style.overflow = originalStyle;
  176. document.documentElement.style.removeProperty('scrollbar-width');
  177. });
  178. });
  179. </script>
  180. <style lang="scss" scoped>
  181. .home-page {
  182. background-color: 000!important;
  183. /* 组件级别的滚动条隐藏 */
  184. &::-webkit-scrollbar {
  185. display: none;
  186. }
  187. #product {
  188. background-color: 000!important;
  189. .product-card {
  190. background-color: 000!important;
  191. &:hover {
  192. transform: translateY(-10px) rotate(1deg) scale(1.02);
  193. }
  194. }
  195. }
  196. }
  197. /* 渐入动画 */
  198. @keyframes fadeInUp {
  199. from {
  200. opacity: 0;
  201. transform: translateY(20px);
  202. }
  203. to {
  204. opacity: 1;
  205. transform: translateY(0);
  206. }
  207. }
  208. .animate-fade-in-up {
  209. animation: fadeInUp 0.8s ease forwards;
  210. }
  211. </style>