2025-09-18 11:19:24 +08:00
|
|
|
|
<!-- src/views/pc/index.vue -->
|
2025-09-16 17:27:55 +08:00
|
|
|
|
<template>
|
2025-09-18 11:19:24 +08:00
|
|
|
|
<div class="pc-home">
|
|
|
|
|
<!-- 第一屏:全屏轮播 -->
|
|
|
|
|
<div class="first-screen">
|
2025-09-16 17:27:55 +08:00
|
|
|
|
<div class="carousel-wrapper">
|
2025-09-18 11:19:24 +08:00
|
|
|
|
<a-carousel autoplay :autoplay-speed="5000" arrows dots-class="slick-dots slick-thumb">
|
|
|
|
|
<div class="carousel-item">
|
|
|
|
|
<video src="./video/9c4a6c72df9f8a4f6b013003cb2f6bd5.mp4" autoplay loop muted playsinline></video>
|
|
|
|
|
<div class="carousel-content">
|
|
|
|
|
<h1 class="animate-slide-in slideTitle">我们的愿景</h1>
|
|
|
|
|
<p class="animate-slide-in delay-1 slideintro">成为全球企业信赖的能碳管理伙伴定义智慧零碳时代新标准</p>
|
|
|
|
|
<p class="animate-slide-in delay-2 englishFont">BECOME A TRUSTED PARTNER IN ENERGY AND CARBON MANAGEMENT
|
|
|
|
|
FOR GLOBAL ENTERPRISES; DEFINE THE NEW STANDARDS FOR THE ERA OF SMART ZERO CARBON.</p>
|
|
|
|
|
</div>
|
2025-09-16 17:27:55 +08:00
|
|
|
|
</div>
|
2025-09-18 11:19:24 +08:00
|
|
|
|
<div class="carousel-item">
|
2025-09-16 17:27:55 +08:00
|
|
|
|
<video src="https://ec-resource20.oss-cn-shanghai.aliyuncs.com/ec_official_website/3_2.mp4" autoplay loop
|
2025-09-18 11:19:24 +08:00
|
|
|
|
muted playsinline></video>
|
|
|
|
|
<!-- <div class="carousel-content">
|
|
|
|
|
<h1 class="animate-slide-in">可持续发展</h1>
|
|
|
|
|
<p class="animate-slide-in delay-1">推动绿色能源转型</p>
|
|
|
|
|
<a-button class="animate-slide-in delay-2" type="primary" size="large">
|
|
|
|
|
探索方案
|
|
|
|
|
</a-button>
|
|
|
|
|
</div> -->
|
2025-09-16 17:27:55 +08:00
|
|
|
|
</div>
|
2025-09-18 11:19:24 +08:00
|
|
|
|
<div class="carousel-item">
|
2025-09-16 17:27:55 +08:00
|
|
|
|
<video src="https://ec-resource20.oss-cn-shanghai.aliyuncs.com/ec_official_website/3_3.mp4" autoplay loop
|
2025-09-18 11:19:24 +08:00
|
|
|
|
muted playsinline></video>
|
|
|
|
|
<!-- <div class="carousel-content">
|
|
|
|
|
<h1 class="animate-slide-in">创新科技</h1>
|
|
|
|
|
<p class="animate-slide-in delay-1">打造环保解决方案</p>
|
|
|
|
|
<a-button class="animate-slide-in delay-2" type="primary" size="large">
|
|
|
|
|
查看案例
|
|
|
|
|
</a-button>
|
|
|
|
|
</div> -->
|
2025-09-16 17:27:55 +08:00
|
|
|
|
</div>
|
|
|
|
|
</a-carousel>
|
|
|
|
|
</div>
|
2025-09-18 11:19:24 +08:00
|
|
|
|
|
|
|
|
|
<!-- 向下滚动指示器 -->
|
|
|
|
|
<div class="scroll-indicator" @click="scrollToNext">
|
|
|
|
|
<DownOutlined />
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- 第二屏:核心产品 -->
|
|
|
|
|
<div class="second-screen" ref="secondScreenRef">
|
|
|
|
|
<div class="container">
|
|
|
|
|
<div class="content-section animate-fade-in-up">
|
|
|
|
|
<h2>
|
|
|
|
|
<img src="./../../assets/images/point.png" />
|
|
|
|
|
<span>核心产品</span>
|
|
|
|
|
</h2>
|
|
|
|
|
<ul class="core-products animate-fade-in-up">
|
|
|
|
|
<li>AI智控</li>
|
|
|
|
|
<li>高效节能</li>
|
|
|
|
|
<li>能碳双控</li>
|
|
|
|
|
<li>绿色低碳</li>
|
|
|
|
|
</ul>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="services-section">
|
|
|
|
|
<a-row :gutter="[16, 16]" class="serviceList">
|
|
|
|
|
<a-col :span="12">
|
|
|
|
|
<div class="service-card animate-fade-in-up delay-1">
|
|
|
|
|
<h3>全生命周期产品碳足迹平台</h3>
|
|
|
|
|
</div>
|
|
|
|
|
</a-col>
|
|
|
|
|
<a-col :span="12">
|
|
|
|
|
<div class="service-card animate-fade-in-up delay-2">
|
|
|
|
|
<h3>城市级能碳平台</h3>
|
|
|
|
|
</div>
|
|
|
|
|
</a-col>
|
|
|
|
|
</a-row>
|
|
|
|
|
<a-row :gutter="[16, 16]" class="serviceList2">
|
|
|
|
|
<a-col :span="6">
|
|
|
|
|
<div class="service-card animate-fade-in-up delay-3">
|
|
|
|
|
<h3>城市级能碳平台</h3>
|
|
|
|
|
</div>
|
|
|
|
|
</a-col>
|
|
|
|
|
<a-col :span="6">
|
|
|
|
|
<div class="service-card animate-fade-in-up delay-4">
|
|
|
|
|
<h3>工业锅炉节能器</h3>
|
|
|
|
|
</div>
|
|
|
|
|
</a-col>
|
|
|
|
|
<a-col :span="6">
|
|
|
|
|
<div class="service-card animate-fade-in-up delay-5">
|
|
|
|
|
<h3>FMCS智能工业平台</h3>
|
|
|
|
|
</div>
|
|
|
|
|
</a-col>
|
|
|
|
|
<a-col :span="6">
|
|
|
|
|
<div class="service-card animate-fade-in-up delay-6">
|
|
|
|
|
<h3>ESG绿色认证咨询</h3>
|
|
|
|
|
</div>
|
|
|
|
|
</a-col>
|
|
|
|
|
</a-row>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<!-- 第三屏:AI+智能节能技术 -->
|
|
|
|
|
<div class="three-screen" ref="threeScreenRef">
|
|
|
|
|
<div class="container">
|
2025-09-18 16:13:42 +08:00
|
|
|
|
<div class="content-section animate-fade-in-up">
|
|
|
|
|
<h2>
|
|
|
|
|
<img src="./../../assets/images/point.png" />
|
|
|
|
|
<span>AI+智能节能技术</span>
|
|
|
|
|
</h2>
|
|
|
|
|
<p>为客户提供多场景中长期智慧能源战略规划,包括AIoT能源管理系统与低碳技术集成</p>
|
|
|
|
|
</div>
|
|
|
|
|
<!-- 横向循环焦点图展示 轮播图 -->
|
|
|
|
|
<div class="carousel-section">
|
2025-09-18 18:05:42 +08:00
|
|
|
|
<swiper :modules="[Autoplay, Pagination]" :slides-per-view="3.5" :space-between="20" :loop="true" :autoplay="{
|
|
|
|
|
delay: 3000,
|
|
|
|
|
disableOnInteraction: false,
|
|
|
|
|
pauseOnMouseEnter: true
|
|
|
|
|
}" @slideChange="onThirdScreenSlideChange" @autoplayTimeLeft="onThirdScreenAutoplayTimeLeft"
|
|
|
|
|
class="ai-tech-carousel">
|
|
|
|
|
<swiper-slide v-for="(item, index) in carouselItems" :key="index">
|
|
|
|
|
<div class="slide-content" @click="selectItem(index)" :class="{ active: index === currentIndex }">
|
2025-09-18 16:13:42 +08:00
|
|
|
|
<img :src="item.image" :alt="item.title" />
|
2025-09-18 18:05:42 +08:00
|
|
|
|
<div class="slide-info">
|
2025-09-18 16:13:42 +08:00
|
|
|
|
<h3>{{ item.title }}</h3>
|
|
|
|
|
<p>{{ item.description }}</p>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2025-09-18 18:05:42 +08:00
|
|
|
|
</swiper-slide>
|
|
|
|
|
|
|
|
|
|
</swiper>
|
2025-09-18 16:13:42 +08:00
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<!-- 第四屏 -应用场景 -->
|
|
|
|
|
<div class="screens-four">
|
|
|
|
|
<div class="container">
|
|
|
|
|
<div class="content-section animate-fade-in-up">
|
|
|
|
|
<h2>
|
|
|
|
|
<img src="./../../assets/images/point.png" />
|
|
|
|
|
<span>应用场景</span>
|
|
|
|
|
</h2>
|
2025-09-18 18:05:42 +08:00
|
|
|
|
<p class="desc">融合智能感知与认知计算,全面提升运营效率与决策智能化水平</p>
|
2025-09-18 16:13:42 +08:00
|
|
|
|
</div>
|
|
|
|
|
<!-- 横向滚动屏 -->
|
|
|
|
|
<div class="carousel-section">
|
2025-09-18 18:05:42 +08:00
|
|
|
|
<swiper :modules="[Autoplay, Pagination]" :slides-per-view="4.5" :space-between="0" :loop="true" :autoplay="{
|
|
|
|
|
delay: 3000,
|
|
|
|
|
disableOnInteraction: false,
|
|
|
|
|
pauseOnMouseEnter: true
|
|
|
|
|
}" @slideChange="onSlideChange" @autoplayTimeLeft="onAutoplayTimeLeft" class="tech-carousel">
|
|
|
|
|
<swiper-slide v-for="(item, index) in carouselSeneceList" :key="index">
|
|
|
|
|
<div class="slide-content" @mouseenter="handleMouseEnter(index)" @mouseleave="handleMouseLeave(index)">
|
2025-09-18 16:13:42 +08:00
|
|
|
|
<img :src="item.image" :alt="item.title" />
|
2025-09-18 18:05:42 +08:00
|
|
|
|
<div class="image-overlay default-info" v-show="!item.hovered">
|
|
|
|
|
<p>{{ item.companyName }}</p>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="hover-overlay" v-show="item.hovered">
|
|
|
|
|
<div class="overlay-content">
|
|
|
|
|
<h3>{{ item.title }}</h3>
|
|
|
|
|
<p>{{ item.description }}</p>
|
|
|
|
|
</div>
|
2025-09-18 16:13:42 +08:00
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2025-09-18 18:05:42 +08:00
|
|
|
|
</swiper-slide>
|
|
|
|
|
|
|
|
|
|
<!-- 进度条导航 -->
|
|
|
|
|
<div class="swiper-pagination-custom">
|
|
|
|
|
<div class="progress-bar">
|
|
|
|
|
<div class="progress-fill" :style="{ width: progress + '%' }"></div>
|
|
|
|
|
</div>
|
2025-09-18 16:13:42 +08:00
|
|
|
|
</div>
|
2025-09-18 18:05:42 +08:00
|
|
|
|
</swiper>
|
2025-09-18 16:13:42 +08:00
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<!--第五屏 合作伙伴 -->
|
|
|
|
|
<div class="partner-screens">
|
|
|
|
|
<div class="container">
|
|
|
|
|
<div class="content-section animate-fade-in-up">
|
|
|
|
|
<h2>
|
|
|
|
|
<img src="./../../assets/images/point.png" />
|
|
|
|
|
<span>合作伙伴</span>
|
|
|
|
|
</h2>
|
|
|
|
|
<p>与您携手共赢,共同创造美好未来</p>
|
|
|
|
|
<h4>
|
|
|
|
|
<line></line>荣誉资质<line></line>
|
|
|
|
|
</h4>
|
|
|
|
|
<div class="partner-img">
|
|
|
|
|
<p><span>ISO9001认证</span></p>
|
|
|
|
|
<p><span>ISO45001认证</span></p>
|
|
|
|
|
<p><span>ISO14001认证</span></p>
|
|
|
|
|
</div>
|
|
|
|
|
<h4 class="partner-title">
|
|
|
|
|
<line></line>客户及战略伙伴<line></line>
|
|
|
|
|
</h4>
|
2025-09-18 11:19:24 +08:00
|
|
|
|
|
2025-09-18 16:13:42 +08:00
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="partnerImgAll animate-fade-in-up">
|
|
|
|
|
<img src="../../assets/images/partercomp.png" alt="">
|
2025-09-18 11:19:24 +08:00
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2025-09-18 16:13:42 +08:00
|
|
|
|
<!--第六屏 新闻资讯 -->
|
2025-09-18 11:19:24 +08:00
|
|
|
|
<div class="other-screens">
|
|
|
|
|
<div class="container">
|
2025-09-18 16:13:42 +08:00
|
|
|
|
<div class="content-section animate-fade-in-up">
|
|
|
|
|
<h2>
|
|
|
|
|
<img src="./../../assets/images/point.png" />
|
|
|
|
|
<span>新闻资讯</span>
|
|
|
|
|
</h2>
|
|
|
|
|
<p class="desc">了解最新行业资讯 把握市场最新动向</p>
|
|
|
|
|
<div class="content">
|
|
|
|
|
<div class="lt">
|
|
|
|
|
<div class="img"><img src="./../../assets/images/news.png" /></div>
|
|
|
|
|
<p class="title">降本增效新引擎:AI如何实现能源的精细化管理与数智变革?</p>
|
|
|
|
|
<p class="nr">在能源革命和数字化转型的双重驱动下,能源精细化管理已成为企业节能降碳、实现可持续发展的必然选择...</p>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="rt">
|
|
|
|
|
<ul>
|
|
|
|
|
<li v-for="item in newsList" :key="item.id">
|
|
|
|
|
<div class="newslt">
|
|
|
|
|
<h4>{{ item.date.substring(8, 10) }}</h4>
|
2025-09-18 16:17:50 +08:00
|
|
|
|
<p>{{ item.date.substring(0, 7) }}</p>
|
2025-09-18 16:13:42 +08:00
|
|
|
|
</div>
|
|
|
|
|
<div class="newsrt">
|
|
|
|
|
<h4>{{ item.title }}</h4>
|
|
|
|
|
<p>{{ item.description }}</p>
|
|
|
|
|
</div>
|
|
|
|
|
</li>
|
|
|
|
|
</ul>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2025-09-18 11:19:24 +08:00
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2025-09-16 17:27:55 +08:00
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
2025-09-18 16:13:42 +08:00
|
|
|
|
import { ref, onMounted, onBeforeUnmount, nextTick } from 'vue'
|
2025-09-18 11:19:24 +08:00
|
|
|
|
import { DownOutlined } from '@ant-design/icons-vue'
|
2025-09-18 18:05:42 +08:00
|
|
|
|
import { Swiper, SwiperSlide } from 'swiper/vue';
|
|
|
|
|
import { Autoplay, Navigation, Pagination } from 'swiper/modules';
|
|
|
|
|
import 'swiper/css';
|
|
|
|
|
import 'swiper/css/pagination';
|
|
|
|
|
// 静态导入所有图片(AI智能节能技术)
|
2025-09-18 16:13:42 +08:00
|
|
|
|
import carouse1 from './../../assets/images/carouse1.png'
|
|
|
|
|
import carouse2 from './../../assets/images/carouse2.png'
|
|
|
|
|
import carouse3 from './../../assets/images/carouse3.png'
|
|
|
|
|
import carouse4 from './../../assets/images/carouse4.png'
|
|
|
|
|
import carouse5 from './../../assets/images/carouse5.png'
|
2025-09-18 18:05:42 +08:00
|
|
|
|
//应用场景图片
|
|
|
|
|
import appScene1 from './../../assets/images/scene1.png'
|
|
|
|
|
import appScene2 from './../../assets/images/scene2.png'
|
|
|
|
|
import appScene3 from './../../assets/images/scene3.png'
|
|
|
|
|
import appScene4 from './../../assets/images/scene4.png'
|
|
|
|
|
import appScene5 from './../../assets/images/scene5.png'
|
|
|
|
|
// 添加进度状态
|
|
|
|
|
const progress = ref(0);
|
|
|
|
|
const swiperRef = ref(null);
|
2025-09-18 11:19:24 +08:00
|
|
|
|
|
|
|
|
|
// 新闻数据
|
|
|
|
|
const newsList = ref([
|
2025-09-18 16:13:42 +08:00
|
|
|
|
{
|
|
|
|
|
id: 1,
|
|
|
|
|
date: '2025-09-01',
|
|
|
|
|
title: '降本增效新引擎:AI如何实现能源的精细化管理与数智变革?',
|
|
|
|
|
description: '在能源革命和数字化转型的双重驱动下,能源精细化管理已成为企业节能降碳、实现可持续发展的必然选择...'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 2,
|
|
|
|
|
date: '2025-09-04',
|
|
|
|
|
title: '降本增效新引擎:AI如何实现能源的精细化管理与数智变革?',
|
|
|
|
|
description: '在能源革命和数字化转型的双重驱动下,能源精细化管理已成为企业节能降碳、实现可持续发展的必然选择...'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 3,
|
|
|
|
|
date: '2025-09-15',
|
|
|
|
|
title: '降本增效新引擎:AI如何实现能源的精细化管理与数智变革?',
|
|
|
|
|
description: '在能源革命和数字化转型的双重驱动下,能源精细化管理已成为企业节能降碳、实现可持续发展的必然选择...'
|
|
|
|
|
}
|
2025-09-18 11:19:24 +08:00
|
|
|
|
])
|
|
|
|
|
|
|
|
|
|
const secondScreenRef = ref<HTMLElement | null>(null)
|
|
|
|
|
const observer = ref<IntersectionObserver | null>(null)
|
2025-09-18 18:05:42 +08:00
|
|
|
|
/************************AI+智能节能技术——第三屏轮播图片*************************** */
|
|
|
|
|
// AI智能节能技术-轮播图数据
|
2025-09-18 16:13:42 +08:00
|
|
|
|
const carouselItems = ref([
|
|
|
|
|
{
|
|
|
|
|
image: carouse1,
|
|
|
|
|
title: '智能能源管理',
|
|
|
|
|
description: '通过AI技术实现能源使用优化'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
image: carouse2,
|
|
|
|
|
title: '碳足迹追踪',
|
|
|
|
|
description: '全生命周期碳排放监控与分析'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
image: carouse3,
|
|
|
|
|
title: '绿色工厂解决方案',
|
|
|
|
|
description: '工业4.0背景下的低碳生产模式'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
image: carouse4,
|
|
|
|
|
title: '城市能源互联网',
|
|
|
|
|
description: '构建智慧城市的能源生态系统'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
image: carouse5,
|
|
|
|
|
title: '可再生能源集成',
|
|
|
|
|
description: '风光储一体化解决方案'
|
|
|
|
|
}
|
|
|
|
|
])
|
2025-09-18 18:05:42 +08:00
|
|
|
|
const thirdScreenProgress = ref(0);
|
|
|
|
|
const thirdScreenSwiperRef = ref(null);
|
|
|
|
|
|
|
|
|
|
const onThirdScreenSlideChange = (swiper: any) => {
|
|
|
|
|
thirdScreenProgress.value = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const onThirdScreenAutoplayTimeLeft = (s: any, time: any, progressValue: any) => {
|
|
|
|
|
thirdScreenProgress.value = (1 - progressValue) * 100;
|
|
|
|
|
thirdScreenSwiperRef.value = s;
|
|
|
|
|
}
|
|
|
|
|
/************************AI+智能节能技术——第三屏轮播图片 end*************************** */
|
|
|
|
|
//应用场景轮播图
|
|
|
|
|
const carouselSeneceList = ref([
|
|
|
|
|
{
|
|
|
|
|
image: appScene1,
|
|
|
|
|
companyName: '绿色酒店',
|
|
|
|
|
title: '绿色酒店123',
|
|
|
|
|
hovered: false,
|
|
|
|
|
description: '创建绿色酒店是社会进步的需要。在建设绿色酒店的过程中,采用科学的方法对酒店进行绿色管理。'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
image: appScene2,
|
|
|
|
|
companyName: '零碳园区',
|
|
|
|
|
title: '零碳园区2',
|
|
|
|
|
hovered: false,
|
|
|
|
|
description: '通过应用清洁能源、提升能源利用效率、优化碳排放管理等技术手段,实现园区内碳排放总量抵消的现代化产业园区'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
image: appScene3,
|
|
|
|
|
companyName: '商业综合体2',
|
|
|
|
|
title: '商业综合体',
|
|
|
|
|
hovered: false,
|
|
|
|
|
description: '介绍商业综合体场景的内容介绍商业综合介绍商业综合体介绍,商业综合体介绍商业综合体体。介绍介绍商业综合体场景的内容介绍商业综合介绍商业综合体介绍,商业综合体介绍商业综合体体。'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
image: appScene4,
|
|
|
|
|
companyName: '绿色工厂2',
|
|
|
|
|
title: '绿色工厂',
|
|
|
|
|
hovered: false,
|
|
|
|
|
description: '绿色工厂是绿色制造的实施主体,属于绿色制造体系的核心支撑单元,侧重于生产过程的绿色化。'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
image: appScene5,
|
|
|
|
|
companyName: '智慧医院',
|
|
|
|
|
title: '智慧医院',
|
|
|
|
|
hovered: false,
|
|
|
|
|
description: '智慧医院是通过数字化技术与医疗场景深度融合,构建的全流程智能化服务体系。它以数据互联互通为基础,结合人工智能、物联网、5G等技术,实现患者服务便捷化、诊疗流程精准化、医院管理精细化,是医疗行业未来发展的核心方向。'
|
|
|
|
|
}
|
|
|
|
|
])
|
|
|
|
|
|
2025-09-18 16:13:42 +08:00
|
|
|
|
|
|
|
|
|
const currentIndex = ref(0)
|
|
|
|
|
const carouselWrapper = ref(null)
|
|
|
|
|
|
|
|
|
|
// 选择图片
|
|
|
|
|
const selectItem = (index) => {
|
|
|
|
|
currentIndex.value = index
|
|
|
|
|
centerActiveItem()
|
|
|
|
|
}
|
|
|
|
|
// 居中显示当前选中项
|
|
|
|
|
const centerActiveItem = () => {
|
|
|
|
|
nextTick(() => {
|
|
|
|
|
if (carouselWrapper.value) {
|
|
|
|
|
const activeItem = carouselWrapper.value.querySelector('.carousel-item.active')
|
|
|
|
|
if (activeItem) {
|
|
|
|
|
const containerWidth = carouselWrapper.value.offsetWidth
|
|
|
|
|
const itemWidth = activeItem.offsetWidth
|
|
|
|
|
const itemLeft = activeItem.offsetLeft
|
|
|
|
|
const scrollLeft = itemLeft - (containerWidth - itemWidth) / 2
|
|
|
|
|
carouselWrapper.value.scrollTo({
|
|
|
|
|
left: scrollLeft,
|
|
|
|
|
behavior: 'smooth'
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-09-18 11:19:24 +08:00
|
|
|
|
|
|
|
|
|
// 滚动到下一屏
|
|
|
|
|
const scrollToNext = () => {
|
|
|
|
|
const nextScreen = document.querySelector('.second-screen')
|
|
|
|
|
if (nextScreen) {
|
|
|
|
|
window.scrollTo({
|
|
|
|
|
top: nextScreen.offsetTop,
|
|
|
|
|
behavior: 'smooth'
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 初始化 Intersection Observer
|
|
|
|
|
const initIntersectionObserver = () => {
|
|
|
|
|
observer.value = new IntersectionObserver((entries) => {
|
|
|
|
|
entries.forEach(entry => {
|
|
|
|
|
if (entry.isIntersecting) {
|
|
|
|
|
entry.target.classList.add('visible')
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}, {
|
|
|
|
|
threshold: 0.1
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
// 观察所有需要动画的元素
|
|
|
|
|
const animateElements = document.querySelectorAll('.animate-fade-in-up, .animate-slide-in')
|
|
|
|
|
animateElements.forEach(el => {
|
|
|
|
|
observer.value?.observe(el)
|
|
|
|
|
})
|
|
|
|
|
}
|
2025-09-18 18:05:42 +08:00
|
|
|
|
/******************应用场景-逻辑start******************* */
|
|
|
|
|
// 修改鼠标事件处理方法
|
|
|
|
|
const handleMouseEnter = (index: number) => {
|
|
|
|
|
carouselSeneceList.value[index].hovered = true
|
|
|
|
|
}
|
2025-09-18 11:19:24 +08:00
|
|
|
|
|
2025-09-18 18:05:42 +08:00
|
|
|
|
const handleMouseLeave = (index: number) => {
|
|
|
|
|
carouselSeneceList.value[index].hovered = false
|
|
|
|
|
}
|
|
|
|
|
const onSlideChange = (swiper: any) => {
|
|
|
|
|
progress.value = 0;
|
|
|
|
|
}
|
|
|
|
|
// 处理自动播放时间
|
|
|
|
|
const onAutoplayTimeLeft = (s: any, time: any, progressValue: any) => {
|
|
|
|
|
progress.value = (1 - progressValue) * 10;
|
|
|
|
|
swiperRef.value = s;
|
|
|
|
|
};
|
|
|
|
|
/*****************应用场景-逻辑start******************** */
|
2025-09-18 11:19:24 +08:00
|
|
|
|
onMounted(() => {
|
|
|
|
|
initIntersectionObserver()
|
|
|
|
|
})
|
2025-09-16 17:27:55 +08:00
|
|
|
|
|
2025-09-18 11:19:24 +08:00
|
|
|
|
onBeforeUnmount(() => {
|
|
|
|
|
if (observer.value) {
|
|
|
|
|
observer.value.disconnect()
|
|
|
|
|
}
|
|
|
|
|
})
|
2025-09-16 17:27:55 +08:00
|
|
|
|
</script>
|
|
|
|
|
|
2025-09-18 11:19:24 +08:00
|
|
|
|
<style lang="less" scoped>
|
|
|
|
|
@import 'style/index.less';
|
|
|
|
|
</style>
|