officialWebsite/src/views/companyprofil/size768/index.vue

876 lines
28 KiB
Vue
Raw Normal View History

2025-02-19 11:04:19 +00:00
<template>
2025-02-20 05:23:38 +00:00
<div class="page-container">
<header className="header flex items-center justify-between">
<div class="logo">
<img src="@/assets/image/logo.png" alt="logo" />
2025-02-19 11:04:19 +00:00
</div>
2025-02-20 05:23:38 +00:00
<div class="tabs">
2025-02-19 11:59:32 +00:00
<div
2025-02-20 05:23:38 +00:00
class="tab-item"
:class="{ active: currentTab === 'home' }"
@click="handleTabClick('home')"
2025-02-19 11:59:32 +00:00
>
2025-02-20 05:23:38 +00:00
首页
2025-02-19 11:04:19 +00:00
</div>
<div
2025-02-20 05:23:38 +00:00
class="tab-item"
2025-02-22 09:37:27 +00:00
:class="{ active: currentTab === 'companyprofil' }"
@click="handleTabClick('companyprofil')"
2025-02-19 11:04:19 +00:00
>
2025-02-20 05:23:38 +00:00
公司概况
2025-02-19 11:04:19 +00:00
</div>
2025-02-20 05:23:38 +00:00
<div
class="tab-item"
2025-02-22 09:37:27 +00:00
:class="{ active: currentTab === 'businessintroduction' }"
@click="handleTabClick('businessintroduction')"
2025-02-20 05:23:38 +00:00
>
业务介绍
2025-02-19 11:04:19 +00:00
</div>
</div>
2025-02-20 05:23:38 +00:00
</header>
2025-02-21 03:12:53 +00:00
<main>
2025-02-21 03:51:56 +00:00
<section style="background: #ffffff" className="relative">
<div
class="relative section-first h-[1524px] box-contain pt-[718px] mb-[400px]"
>
2025-02-19 11:59:32 +00:00
<div
2025-02-20 05:23:38 +00:00
class="w-[640px] title ml-[188px]"
2025-02-19 11:59:32 +00:00
:ref="
(el) => {
2025-02-20 05:23:38 +00:00
moveRefs[0].value = el;
2025-02-19 11:59:32 +00:00
}
"
>
2025-02-20 05:23:38 +00:00
<div>领航文艺全周期</div>
<div>创变价值新巅峰</div>
2025-02-19 11:04:19 +00:00
</div>
2025-02-19 11:59:32 +00:00
<div
:ref="
(el) => {
2025-02-20 05:23:38 +00:00
moveRefs[1].value = el;
2025-02-19 11:59:32 +00:00
}
"
class="text-[35px] text-[#8B59F7] w-[958px] ml-[188px] mt-[55px]"
2025-02-19 11:59:32 +00:00
>
2025-02-20 05:23:38 +00:00
FiEE立志成为文艺创作全周期的掌舵人深度参与从灵感初绽作品打磨完成到市场推广宣传文化广泛传播的每一处关键节点
2025-02-19 11:04:19 +00:00
</div>
2025-02-20 05:23:38 +00:00
<div ref="moveRef3" class="absolute top-[603px] right-[63px]">
<img
class="w-[949px] h-[574px]"
src="@/assets/image/companyprofil/768/image-q.png"
2025-02-20 05:23:38 +00:00
/>
</div>
2025-02-19 11:04:19 +00:00
</div>
2025-02-21 03:51:56 +00:00
<div class="w-[1920px] absolute bottom-[-660px]">
<img
src="@/assets/image/companyprofil/768/icon-lang.png"
alt="logo"
/>
2025-02-19 11:04:19 +00:00
</div>
2025-02-20 05:23:38 +00:00
</section>
<section style="background: #f8f9ff">
<div class="flex flex-wrap justify-center">
<div class="w-full px-[188px] mt-[400px]">
2025-02-20 05:23:38 +00:00
<div class="text-[#8B59F7] text-[40px]">公司介绍</div>
</div>
<div class="w-full title mt-[58px] px-[188px]">
<div>独树一帜</div>
<div>全周期价值赋能领航者</div>
</div>
<div class="w-full px-[188px] mt-[140px]">
<div
:ref="
(el) => {
moveRefs[2].value = el;
}
"
class="text-[#455363] text-[40px] w-[1345px]"
>
FiEE彻底打破传统单一服务机构的局限以行业变革者的姿态深度融合前沿技术与丰富多元的资源精心构建起一套贯穿文艺创作从萌芽构思到辉煌绽放全流程的
"全周期" 价值赋能体系
</div>
<div
:ref="
(el) => {
moveRefs[3].value = el;
}
"
class="mt-[60px] text-[#455363] text-[40px] w-[1345px]"
>
无论你是刚刚踏入文艺殿堂怀揣梦想的创作新人还是在文艺道路上摸爬滚打渴望突破创作瓶颈攀登更高文艺巅峰的成熟文艺工作者FiEE都将成为你最坚实的伙伴一路贴心陪伴为你的文艺征途遮风挡雨指引前行的方向
</div>
</div>
2025-02-19 11:59:32 +00:00
<div
:ref="
(el) => {
2025-02-20 05:23:38 +00:00
moveRefs[4].value = el;
2025-02-19 11:59:32 +00:00
}
"
2025-02-20 05:23:38 +00:00
class="mt-[140px] mb-[235px] overflow-hidden"
2025-02-19 11:59:32 +00:00
>
2025-02-20 05:23:38 +00:00
<img
:ref="
(el) => {
moveRefs[5].value = el;
}
"
class="w-[1625px] h-[1038px]"
src="@/assets/image/companyprofil/768/imageshow-2.png"
2025-02-20 05:23:38 +00:00
/>
2025-02-19 11:04:19 +00:00
</div>
</div>
2025-02-20 05:23:38 +00:00
</section>
<section class="relative" style="background: #fff">
<div class="flex flex-wrap justify-center">
<div class="w-full px-[188px] mt-[113px]">
2025-02-20 05:23:38 +00:00
<div class="text-[#8B59F7] text-[40px]">团队介绍</div>
2025-02-19 11:04:19 +00:00
</div>
2025-02-20 05:23:38 +00:00
<div class="w-full title mt-[58px] px-[188px]">
<div>汇聚精英</div>
<div>点燃文艺创变引擎</div>
2025-02-19 11:04:19 +00:00
</div>
2025-02-20 05:23:38 +00:00
<div class="w-full px-[188px] mt-[140px]">
<div
:ref="
(el) => {
moveRefs[6].value = el;
}
"
class="text-[#455363] text-[40px] w-[1345px]"
>
FiEE团队由运营专家技术精英及国际顾问组成提供从内容策划到全球推广的全方位支持通过跨界合作与资源整合FiEE突破传统边界探索文艺新表达依托前沿技术与精准营销助力作品实现商业价值与社会影响力的双重提升为文艺繁荣注入持久动力
</div>
2025-02-19 11:04:19 +00:00
</div>
2025-02-20 05:23:38 +00:00
<div class="mt-[143px] mb-[188px] overflow-hidden">
<img
:ref="
(el) => {
moveRefs[7].value = el;
}
"
class="w-[1625px] h-[1038px]"
src="@/assets/image/companyprofil/768/imageshow-3.png"
2025-02-20 05:23:38 +00:00
/>
2025-02-19 11:04:19 +00:00
</div>
2025-02-20 05:23:38 +00:00
<div class="w-full px-[188px]">
<img
class="w-[145px] h-[145px]"
src="@/assets/image/companyprofil/768/icon-lun.png"
2025-02-20 05:23:38 +00:00
/>
<div class="w-full mt-[50px] text-[#10253E] text-[45px]">
纵横全球 多元领航
</div>
<div class="mt-[38px] text-[#455363] text-[40px] w-[1345px]">
海外精准营销铺设多元渠道塑造国际品牌智能管理
多语言平台提供本地化服务
</div>
2025-02-19 11:04:19 +00:00
</div>
2025-02-20 05:23:38 +00:00
<div class="w-full px-[188px] mt-[170px]">
<img
class="w-[145px] h-[145px]"
src="@/assets/image/companyprofil/768/icon-love.png"
2025-02-20 05:23:38 +00:00
/>
<div class="w-full mt-[50px] text-[#10253E] text-[45px]">
深耕粉丝 构筑生态
</div>
<div class="mt-[38px] text-[#455363] text-[40px] w-[1345px]">
社区精细运营提供多元增值服务升级社群管理工具精准触达用户创新激励机制开发特色衍生周边
</div>
2025-02-19 11:04:19 +00:00
</div>
2025-02-20 05:23:38 +00:00
<div class="w-full px-[188px] mt-[160px] mb-[250px]">
<img
class="w-[145px] h-[145px]"
src="@/assets/image/companyprofil/768/icon-p.png"
2025-02-20 05:23:38 +00:00
/>
2025-02-19 11:04:19 +00:00
2025-02-20 05:23:38 +00:00
<div class="w-full mt-[50px] text-[#10253E] text-[45px]">
广纳贤才 团队进阶
</div>
<div class="mt-[38px] text-[#455363] text-[40px] w-[1345px]">
广纳技术营销精英注入创新活力强化内部培训优化组织架构引入先进理念提升管理与服务效能
</div>
</div>
<div class="icon-langmul">
<img
class="w-[846px] h-[216px]"
src="@/assets/image/companyprofil/768/icon-langmul.png"
2025-02-20 05:23:38 +00:00
/>
</div>
2025-02-19 11:59:32 +00:00
</div>
2025-02-20 05:23:38 +00:00
</section>
<section class="section-four">
<div class="flex flex-wrap justify-center">
<div class="w-full px-[188px] mt-[458px]">
2025-02-20 05:23:38 +00:00
<div class="text-[#8B59F7] text-[40px]">卓越建树</div>
</div>
2025-02-19 11:59:32 +00:00
<div
:ref="
(el) => {
2025-02-20 05:23:38 +00:00
moveRefs[8].value = el;
2025-02-19 11:59:32 +00:00
}
"
2025-02-20 05:23:38 +00:00
class="w-full title mt-[58px] px-[188px]"
2025-02-19 11:59:32 +00:00
>
2025-02-20 05:23:38 +00:00
<div>以开拓之姿</div>
<div>登文艺之巅</div>
2025-02-19 11:59:32 +00:00
</div>
2025-02-20 05:23:38 +00:00
<div class="w-full px-[188px] mt-[140px]">
<div
:ref="
(el) => {
moveRefs[9].value = el;
}
"
class="text-[#455363] text-[40px] w-[1345px]"
>
长期深耕文艺领域FiEE持续拓展业务版图积累了深厚的行业资源搭建起广泛的合作网络目前已与多个全球热门自媒体平台深度携手从多维度助力文艺创作者闪耀国际舞台绽放独有的艺术光芒
</div>
2025-02-19 11:59:32 +00:00
</div>
<div
:ref="
(el) => {
2025-02-20 05:23:38 +00:00
moveRefs[10].value = el;
2025-02-19 11:59:32 +00:00
}
"
2025-02-20 05:23:38 +00:00
class="w-full mt-[260px] px-[188px] text-[55px] font-semibold"
2025-02-19 11:59:32 +00:00
>
2025-02-20 05:23:38 +00:00
<div>权威资质认证</div>
<div>铸就文艺事业坚实根基</div>
</div>
<div
:ref="
(el) => {
moveRefs[11].value = el;
}
"
class="w-full px-[188px] mt-[60px]"
>
<div class="text-[#455363] text-[40px] w-[1345px]">
FiEE提供专业且权威的资质认证服务助力文艺创作者获取行业广泛认可的资质这不仅能让文艺创作者的作品价值得到显著提升更能使文艺创作者在竞争白热化的艺术市场中崭露头角大幅增强文艺工作者的市场竞争力为文艺创作者的事业铺就稳固基石
2025-02-19 11:59:32 +00:00
</div>
</div>
2025-02-20 05:23:38 +00:00
<div
2025-02-19 11:59:32 +00:00
:ref="
(el) => {
2025-02-20 05:23:38 +00:00
moveRefs[12].value = el;
2025-02-19 11:59:32 +00:00
}
"
2025-02-20 05:23:38 +00:00
class="mt-[120px] mb-[260px] overflow-hidden"
>
<img
class="w-[1625px] h-[1038px]"
src="@/assets/image/companyprofil/768/imageshow-4.png"
2025-02-20 05:23:38 +00:00
/>
</div>
2025-02-20 02:29:53 +00:00
<div
:ref="
(el) => {
2025-02-20 05:23:38 +00:00
moveRefs[13].value = el;
2025-02-20 02:29:53 +00:00
}
"
2025-02-20 05:23:38 +00:00
class="w-full px-[188px] text-[55px] font-semibold"
2025-02-20 02:29:53 +00:00
>
2025-02-20 05:23:38 +00:00
<div>全球平台矩阵</div>
<div>拓展文艺传播边界</div>
</div>
<div class="w-full px-[188px] mt-[60px]">
<div
:ref="
(el) => {
moveRefs[14].value = el;
}
"
class="text-[#455363] text-[40px] w-[1345px]"
>
<div>
FiEE凭借深厚的行业资源和广泛的合作网络与超过 30
个全球热门自媒体平台达成深度战略合作伙伴关系
</div>
<div>
从国际知名的社交平台到专注文艺领域的专业媒体我们为文艺创作者精心打造专属账号并运用先进的优化策略让文艺创作者的账号在众多创作者中脱颖而出
</div>
</div>
</div>
<div class="mt-[120px] mb-[220px] overflow-hidden">
<img
:ref="
(el) => {
moveRefs[15].value = el;
}
"
class="w-[1625px] h-[1038px]"
src="@/assets/image/companyprofil/768/imageshow-5.png"
2025-02-20 05:23:38 +00:00
/>
2025-02-20 02:29:53 +00:00
</div>
</div>
2025-02-20 05:23:38 +00:00
</section>
<section style="background: #fff">
<div class="flex flex-wrap justify-center">
<div class="w-full px-[188px] mt-[245px]">
2025-02-20 05:23:38 +00:00
<div class="text-[#8B59F7] text-[40px]">聚焦FiEE前沿动态</div>
</div>
<div
:ref="
(el) => {
moveRefs[16].value = el;
}
"
class="w-full title mt-[58px] px-[188px]"
>
<div>洞察趋势</div>
<div>点亮文艺前行灯塔</div>
</div>
<div class="w-full px-[188px] mt-[140px]">
2025-02-20 02:29:53 +00:00
<div
2025-02-20 05:23:38 +00:00
:ref="
(el) => {
moveRefs[17].value = el;
}
"
class="text-[#455363] text-[40px] w-[1345px]"
2025-02-20 02:29:53 +00:00
>
2025-02-20 05:23:38 +00:00
FIEE始终扎根文艺领域时刻紧跟全球艺术发展趋势通过深度剖析案例开展跨界研讨探索文艺与科技商业的深度融合为文艺事业未来发展提供前瞻性洞察与灵感启迪
</div>
</div>
<div class="w-full mt-[143px] flex flex-wrap justify-end">
<div class="flex flex-wrap">
<div class="arrow-btn" @click="handlePrev">
<img
class="w-[95px] h-[95px]"
src="@/assets/image/companyprofil/768/icon-left.png"
2025-02-20 05:23:38 +00:00
/>
</div>
<div class="arrow-btn ml-[63px] mr-[230px]" @click="handleNext">
<img
class="w-[95px] h-[95px]"
src="@/assets/image/companyprofil/768/icon-right.png"
2025-02-20 05:23:38 +00:00
/>
</div>
</div>
</div>
<div
class="mt-[73px] mb-[253px] carousel-container px-[80px] py-[40px]"
>
<div
ref="carouselTrack"
class="carousel-track"
:style="{
transform: `translateX(-${getSlideOffset()}px)`,
}"
@mousedown="handleDragStart"
@mousemove="handleDragMove"
@mouseup="handleDragEnd"
@mouseleave="handleDragEnd"
@touchstart="handleDragStart"
@touchmove="handleDragMove"
@touchend="handleDragEnd"
>
<div
v-for="(item, idx) in getVisibleItems()"
:key="idx"
class="carousel-item"
2025-02-21 02:09:59 +00:00
@click="handleCarouselClick(item, $event)"
2025-02-20 05:23:38 +00:00
>
<img class="carousel-image" :src="item.imgUrl" />
<div class="carousel-content">
<div class="carousel-title">
<div>{{ item.title }}</div>
</div>
<div class="carousel-subtitle">
<div>{{ item.subTitle }}</div>
</div>
2025-02-20 02:29:53 +00:00
</div>
</div>
</div>
2025-02-20 05:23:38 +00:00
</div>
2025-02-20 02:29:53 +00:00
</div>
2025-02-20 05:23:38 +00:00
</section>
<section
style="background: #fff"
className="flex flex-wrap justify-center"
>
<img
class="w-[580px] h-[55px] my-[85px]"
2025-02-20 06:31:56 +00:00
src="@/assets/image/image-footer.png"
2025-02-20 05:23:38 +00:00
alt="logo"
/>
</section>
</main>
</div>
2025-02-19 11:04:19 +00:00
</template>
<script setup>
2025-02-20 05:23:38 +00:00
import { onUnmounted, ref, onMounted, reactive, nextTick } from "vue";
2025-02-19 11:04:19 +00:00
import gsap from "gsap";
import { ScrollTrigger } from "gsap/ScrollTrigger";
import { useHome } from "@/store/home/index.js";
import { useTransitionComposable } from "@/composables/transition-composable";
2025-02-20 05:23:38 +00:00
// 定义组件的自定义事件
defineEmits(["sendCode"]);
2025-02-19 11:04:19 +00:00
// 注册 ScrollTrigger 插件
gsap.registerPlugin(ScrollTrigger);
const { transitionState } = useTransitionComposable();
2025-02-21 03:12:53 +00:00
2025-02-19 11:59:32 +00:00
const moveRefs = ref(
2025-02-20 02:29:53 +00:00
Array(18)
2025-02-19 11:59:32 +00:00
.fill(null)
.map(() => ref(null))
);
2025-02-19 11:04:19 +00:00
const { currentTab } = useHome();
let ctx;
2025-02-21 02:09:59 +00:00
// 导入图片
import carouselShow1 from "@/assets/image/companyprofil/768/carouselShow-1.png";
import carouselShow2 from "@/assets/image/companyprofil/768/carouselShow-2.png";
import carouselShow3 from "@/assets/image/companyprofil/768/carouselShow-3.png";
import carouselShow4 from "@/assets/image/companyprofil/768/carouselShow-4.png";
import carouselShow5 from "@/assets/image/companyprofil/768/carouselShow-5.png";
2025-02-20 02:29:53 +00:00
const state = reactive({
marqueeArr: [
{
2025-02-22 09:37:27 +00:00
titleNo: "1",
2025-02-21 02:09:59 +00:00
title: "实现技术突破,引领文艺创作技术革新",
2025-02-20 02:29:53 +00:00
subTitle:
2025-02-21 02:09:59 +00:00
"在数字化浪潮以前所未有的态势席卷文艺领域的当下文艺创作正经历着深刻变革。FiEE凭借着团队持之以恒的努力与创新精神在文艺创作技术领域取得了具有里程碑意义的重大突破。 历经无数个日夜的艰苦攻坚FiEE自主研发的新一代智能创作辅助系统正式上线宛如一颗冉冉升起的璀璨新星为文艺创作开辟了全新的发展路径给整个行业带来了前所未有的变革与机遇。",
imgUrl: carouselShow1,
2025-02-20 02:29:53 +00:00
},
{
2025-02-22 09:37:27 +00:00
titleNo: "2",
2025-02-21 03:12:53 +00:00
title:
"全球化战略升级FiEE与30+国际平台达成战略合作,构建文艺传播新矩阵",
2025-02-20 02:29:53 +00:00
subTitle:
2025-02-21 03:12:53 +00:00
"在全球文化交融以前所未有的迅猛之势加速推进的时代大背景下文艺领域已然成为文化交流与创新的前沿阵地。作为文艺行业的领航者FiEE 以敏锐的战略眼光和果敢的行动力,积极投身于这场全球文化交流的浪潮之中。 近日FiEE 振奋人心地宣布与 TikTok、Instagram等 30 余家国际头部自媒体平台达成深度战略合作,同时正式启动具有深远意义的'文艺无界计划',矢志破除地域之间的文化藩篱。",
2025-02-21 02:09:59 +00:00
imgUrl: carouselShow2,
2025-02-20 02:29:53 +00:00
},
{
2025-02-22 09:37:27 +00:00
titleNo: "3",
2025-02-21 03:12:53 +00:00
title: "助力文艺创作者FiEE 发布'AI × 短视频'全链路解决方案",
2025-02-20 02:29:53 +00:00
subTitle:
2025-02-21 03:12:53 +00:00
"对于文艺创作者而言,创作瓶颈与效率低下是横亘在前行道路上的两座大山。构思一个吸引人的短视频脚本,常常需要耗费大量时间和精力,创作者们不仅要绞尽脑汁思考独特的创意,还要兼顾受众喜好和市场趋势。 作品完成后的传播与推广,同样是一道难以跨越的鸿沟。",
2025-02-21 02:09:59 +00:00
imgUrl: carouselShow3,
2025-02-20 02:29:53 +00:00
},
{
2025-02-22 09:37:27 +00:00
titleNo: "4",
2025-02-21 03:12:53 +00:00
title: "FiEE启动 18 个月艺术 KOL 孵化,培育文艺领域明日之星",
2025-02-20 02:29:53 +00:00
subTitle:
2025-02-21 03:12:53 +00:00
"在文艺产业蓬勃发展的当下优质内容创作者的重要性愈发凸显。作为行业内的先锋企业FiEE始终关注着文艺领域的人才培养与发展动态。 今日FiEE正式宣布启动一项精心筹备长达 18 个月的艺术 KOL 孵化计划,旨在为文艺领域培育一批具有强大影响力的明日之星,推动整个行业的创新发展。",
2025-02-21 02:09:59 +00:00
imgUrl: carouselShow4,
2025-02-20 02:29:53 +00:00
},
{
2025-02-22 09:37:27 +00:00
titleNo: "5",
2025-02-21 03:12:53 +00:00
title: "多元人才汇聚FiEE 构筑文艺创新发展基石",
2025-02-20 02:29:53 +00:00
subTitle:
2025-02-21 03:12:53 +00:00
"在当下文艺行业蓬勃发展、百花齐放的黄金时代,创新俨然成为引领行业持续进步、突破传统格局的关键要素。而追根溯源,人才作为创新的核心驱动力,其重要性不言而喻。 FiEE 深明此理,以海纳百川的胸怀和高瞻远瞩的战略眼光,积极广纳贤才,精心汇聚运营专家、技术精英以及国际顾问。",
2025-02-21 02:09:59 +00:00
imgUrl: carouselShow5,
2025-02-20 02:29:53 +00:00
},
],
});
2025-02-20 05:23:38 +00:00
const carouselTrack = ref(null);
const currentIndex = ref(0);
const isTransitioning = ref(false);
2025-02-20 05:23:38 +00:00
const getVisibleItems = () => {
const items = state.marqueeArr;
// 创建一个包含所有项目的数组,前后各复制一组用于无缝循环
return [...items, ...items, ...items];
};
// 计算实际滑动距离
const getSlideOffset = () => {
if (!carouselTrack.value) return 0;
const firstItem = carouselTrack.value.querySelector(".carousel-item");
if (!firstItem) return 0;
const itemWidth = firstItem.offsetWidth;
const itemMargin = parseInt(window.getComputedStyle(firstItem).marginRight);
const totalWidth = itemWidth + itemMargin;
const len = state.marqueeArr.length;
if (currentIndex.value <= -len) {
currentIndex.value = -currentIndex.value % len;
} else if (currentIndex.value >= len) {
currentIndex.value = currentIndex.value % len;
}
// 初始偏移一组数据的长度
const initialOffset = len * totalWidth + 32;
2025-02-20 05:23:38 +00:00
return initialOffset + currentIndex.value * totalWidth;
};
// 定义 resize 处理函数
const handleResize = () => {
if (carouselTrack.value) {
carouselTrack.value.style.transform = `translateX(-${getSlideOffset()}px)`;
}
};
// 监听窗口大小变化
2025-02-19 11:04:19 +00:00
onMounted(() => {
ctx = gsap.context(() => {
2025-02-19 11:59:32 +00:00
moveRefs.value.forEach((moveRef, index) => {
if (moveRef.value) {
2025-02-20 05:23:38 +00:00
// 修改初始状态设置
gsap.set(moveRef.value, {
opacity: 0,
// 使用 translateX 替代 x并且初始位置设置在元素自身宽度范围内
transform: `translateX(${index % 2 === 0 ? "-100%" : "100%"})`,
// 添加 overflow: hidden 确保不会影响布局
overflow: "hidden",
});
// 修改动画设置
gsap.to(moveRef.value, {
opacity: 1,
transform: "translateX(0)", // 使用 transform 替代 x
2025-02-19 11:59:32 +00:00
duration: 1.2,
ease: "power2.out",
scrollTrigger: {
trigger: moveRef.value,
start: "top 80%",
end: "top 40%",
toggleActions: "play none none reverse",
2025-02-20 05:23:38 +00:00
markers: false,
2025-02-19 11:59:32 +00:00
},
});
}
2025-02-19 11:04:19 +00:00
});
});
2025-02-20 05:23:38 +00:00
// 使用定义的 handleResize 函数
window.addEventListener("resize", handleResize);
// 初始化位置为第二组的开头
currentIndex.value = 0;
nextTick(() => {
if (carouselTrack.value) {
carouselTrack.value.style.transition = "none";
carouselTrack.value.style.transform = `translateX(-${getSlideOffset()}px)`;
// 重新启用过渡效果
setTimeout(() => {
carouselTrack.value.style.transition = "transform 0.5s ease-in-out";
}, 50);
}
});
2025-02-19 11:04:19 +00:00
});
onUnmounted(() => {
if (ctx) {
ctx.revert();
}
ScrollTrigger.killAll();
2025-02-20 05:23:38 +00:00
// 移除事件监听
window.removeEventListener("resize", handleResize);
2025-02-19 11:04:19 +00:00
});
const handleTabClick = (tab) => {
currentTab.value = tab;
2025-02-22 09:37:27 +00:00
router.push("/" + tab);
2025-02-19 11:04:19 +00:00
};
const goToSection = (i) => {
ctx.data.forEach((e) => {
if (e.vars && e.vars.id === "scrollTween") {
e.kill();
}
});
ctx.add(() => {
scrollTween = gsap.to(window, {
scrollTo: { y: i * window.innerHeight, autoKill: false },
duration: 1,
id: "scrollTween",
onComplete: () => (scrollTween = null),
overwrite: true,
});
});
};
2025-02-20 05:23:38 +00:00
// 向前滑动
const handlePrev = () => {
if (isTransitioning.value) return;
isTransitioning.value = true;
2025-02-20 05:23:38 +00:00
if (!carouselTrack.value) return;
2025-02-20 05:23:38 +00:00
carouselTrack.value.style.transition = "transform 0.5s ease-in-out";
currentIndex.value--;
if (currentIndex.value < -state.marqueeArr.length) {
setTimeout(() => {
carouselTrack.value.style.transition = "none";
currentIndex.value = -1;
carouselTrack.value.offsetHeight; // 强制重排
carouselTrack.value.style.transition = "transform 0.5s ease-in-out";
isTransitioning.value = false;
}, 500);
} else {
setTimeout(() => {
isTransitioning.value = false;
2025-02-20 05:23:38 +00:00
}, 500);
}
};
// 向后滑动
const handleNext = () => {
if (isTransitioning.value) return;
isTransitioning.value = true;
2025-02-20 05:23:38 +00:00
if (!carouselTrack.value) return;
2025-02-20 05:23:38 +00:00
carouselTrack.value.style.transition = "transform 0.5s ease-in-out";
currentIndex.value++;
if (currentIndex.value >= state.marqueeArr.length) {
setTimeout(() => {
carouselTrack.value.style.transition = "none";
currentIndex.value = 0;
carouselTrack.value.offsetHeight; // 强制重排
carouselTrack.value.style.transition = "transform 0.5s ease-in-out";
isTransitioning.value = false;
}, 500);
} else {
setTimeout(() => {
isTransitioning.value = false;
2025-02-20 05:23:38 +00:00
}, 500);
}
};
// 添加滑动相关的状态
const isDragging = ref(false);
const startX = ref(0);
const scrollLeft = ref(0);
// 处理鼠标/触摸按下事件
const handleDragStart = (e) => {
isDragging.value = true;
startX.value = e.type === "mousedown" ? e.pageX : e.touches[0].pageX;
scrollLeft.value = getSlideOffset();
// 禁用过渡效果,实现平滑拖动
if (carouselTrack.value) {
carouselTrack.value.style.transition = "none";
}
};
// 处理鼠标/触摸移动事件
const handleDragMove = (e) => {
if (!isDragging.value) return;
e.preventDefault();
const x = e.type === "mousemove" ? e.pageX : e.touches[0].pageX;
const walk = startX.value - x;
if (carouselTrack.value) {
carouselTrack.value.style.transform = `translateX(-${
scrollLeft.value + walk
}px)`;
}
};
// 处理鼠标/触摸释放事件
const handleDragEnd = (e) => {
if (!isDragging.value) return;
isDragging.value = false;
if (carouselTrack.value) {
// 恢复过渡效果
carouselTrack.value.style.transition = "transform 0.5s ease-in-out";
const x = e.type === "mouseup" ? e.pageX : e.changedTouches[0].pageX;
const walk = startX.value - x;
// 获取单个项目的宽度
const firstItem = carouselTrack.value.querySelector(".carousel-item");
if (!firstItem) return;
const itemWidth = firstItem.offsetWidth;
const itemMargin = parseInt(window.getComputedStyle(firstItem).marginRight);
const totalWidth = itemWidth + itemMargin;
// 根据滑动距离决定是否切换到下一个/上一个
if (Math.abs(walk) > totalWidth / 3) {
if (walk > 0) {
handleNext();
} else {
handlePrev();
}
} else {
// 如果滑动距离不够,回到当前位置
carouselTrack.value.style.transform = `translateX(-${getSlideOffset()}px)`;
}
}
};
2025-02-21 02:09:59 +00:00
import { useRouter } from "vue-router";
const router = useRouter();
const handleCarouselClick = (item, event) => {
// 检查事件类型是否为点击
if (event.type === "click") {
event.stopPropagation(); // 阻止事件传播
event.preventDefault(); // 阻止默认行为
router.push({
2025-02-21 03:12:53 +00:00
path: "/companyprofildetail",
2025-02-21 02:09:59 +00:00
query: {
2025-02-22 09:37:27 +00:00
titleNo: item.titleNo,
2025-02-21 02:09:59 +00:00
},
});
}
};
2025-02-19 11:04:19 +00:00
</script>
<style scoped lang="scss">
2025-02-20 05:23:38 +00:00
.page-container {
width: 100%;
overflow-x: hidden;
position: relative;
}
2025-02-19 11:04:19 +00:00
.header {
width: 100%;
height: 155px;
position: fixed;
z-index: 10;
top: 0;
left: 0;
right: 0;
padding: 0 10rem;
background-color: transparent;
}
.logo {
img {
width: 270px;
height: 83px;
}
}
.tabs {
display: flex;
gap: 32px;
margin-right: 32px;
}
.tab-item {
font-size: 30px;
color: #000000;
cursor: pointer;
transition: color 0.3s ease;
padding: 4px 8px;
&.active {
color: #8b59fa;
}
&:hover {
color: #8b59fa;
}
}
.title {
2025-02-20 12:03:42 +00:00
font-size: 85px;
2025-02-19 11:04:19 +00:00
font-weight: 600;
}
.section-first {
background: url("@/assets/image/companyprofil/768/image-x.png");
2025-02-19 11:04:19 +00:00
background-size: cover;
background-position: center;
background-repeat: no-repeat;
}
2025-02-19 11:59:32 +00:00
.section-four {
background: url("@/assets/image/companyprofil/768/bg-3.png");
2025-02-19 11:59:32 +00:00
background-size: cover;
background-position: center;
background-repeat: no-repeat;
}
.icon-langmul {
position: absolute;
bottom: -80px;
right: 0;
}
2025-02-20 05:23:38 +00:00
.carousel-container {
width: 96%;
overflow: hidden;
position: relative;
}
.arrow-btn {
cursor: pointer;
}
.carousel-track {
display: flex;
will-change: transform;
cursor: grab;
user-select: none;
&:active {
cursor: grabbing;
}
}
.carousel-item {
width: 785px;
margin-right: 28px;
flex: 0 0 auto;
2025-02-20 12:03:42 +00:00
display: block;
2025-02-20 05:23:38 +00:00
padding: 23px 20px 40px;
2025-02-20 02:29:53 +00:00
border-radius: 30px;
box-shadow: 0 8px 35px 3px rgba(0, 0, 0, 0.16);
}
2025-02-20 05:23:38 +00:00
.carousel-image {
2025-02-20 12:03:42 +00:00
width: 748px;
height: 563px;
object-fit: cover;
display: block;
2025-02-20 05:23:38 +00:00
}
.carousel-content {
padding: 0 20px 0 60px;
2025-02-20 12:03:42 +00:00
margin-top: 38px;
2025-02-20 05:23:38 +00:00
}
.carousel-title {
font-size: 50px;
font-weight: 500;
2025-02-21 02:09:59 +00:00
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
line-height: 1.5;
max-height: calc(1.5em * 5);
2025-02-20 05:23:38 +00:00
}
.carousel-subtitle {
margin-top: 23px;
color: #455363;
font-size: 40px;
2025-02-21 02:09:59 +00:00
display: -webkit-box;
-webkit-line-clamp: 5;
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
line-height: 1.5;
max-height: calc(1.5em * 5);
2025-02-20 05:23:38 +00:00
}
// 添加一个通用的溢出控制类
.overflow-hidden {
overflow: hidden;
}
2025-02-19 11:04:19 +00:00
</style>