This commit is contained in:
王创世 2025-03-13 14:15:31 +08:00
parent ccb435ae15
commit 59a68745ca
10 changed files with 655 additions and 29 deletions

15
.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,15 @@
{
// 使 IntelliSense
//
// 访: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node-terminal",
"name": "Run Script: dev",
"request": "launch",
"command": "npm run dev",
"cwd": "${workspaceFolder}"
}
]
}

44
assets/animate/animate.js Normal file
View File

@ -0,0 +1,44 @@
export function swiperAnimateCache() {
const allBoxes = window.document.documentElement.querySelectorAll('.ani')
for (var i = 0; i < allBoxes.length; i++) {
allBoxes[i].attributes['style']
? allBoxes[i].setAttribute('swiper-animate-style-cache', allBoxes[i].attributes['style'].value)
: allBoxes[i].setAttribute('swiper-animate-style-cache', ' ')
allBoxes[i].style.visibility = 'hidden'
}
}
export function swiperAnimate(a) {
clearSwiperAnimate()
var b = a.slides[a.activeIndex].querySelectorAll('.ani')
for (var i = 0; i < b.length; i++) {
b[i].style.visibility = 'visible'
const effect = b[i].attributes['swiper-animate-effect']
? b[i].attributes['swiper-animate-effect'].value
: ''
b[i].className = b[i].className + ' ' + effect + ' ' + 'animated'
const duration = b[i].attributes['swiper-animate-duration']
? b[i].attributes['swiper-animate-duration'].value
: ''
// duration && style
const delay = b[i].attributes['swiper-animate-delay']
? b[i].attributes['swiper-animate-delay'].value
: ''
const style = b[i].attributes['style'].value + 'animation-duration:' + duration + ';-webkit-animation-duration:' + duration + ';' + 'animation-delay:' + delay + ';-webkit-animation-delay:' + delay + ';'
// delay && (style = style )
b[i].setAttribute('style', style)
}
}
export function clearSwiperAnimate() {
var allBoxes = window.document.documentElement.querySelectorAll('.ani')
for (var i = 0; i < allBoxes.length; i++) {
allBoxes[i].attributes['swiper-animate-style-cache'] && allBoxes[i].setAttribute('style', allBoxes[i].attributes['swiper-animate-style-cache'].value)
allBoxes[i].style.visibility = 'hidden'
allBoxes[i].className = allBoxes[i].className.replace('animated', ' ')
const effectValue = allBoxes[i].attributes['swiper-animate-effect'].value
/* eslint-disable-next-line */
allBoxes[i].attributes['swiper-animate-effect'] && (effectValue, allBoxes[i].className = allBoxes[i].className.replace(effectValue, ' '))
}
}

6
assets/animate/animate.min.css vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -5,3 +5,36 @@
.box { .box {
color: blue; color: blue;
} }
// 添加新的样式
.Adelay-02 {
animation-delay: 0.2s;
animation-duration: 0.1s;
}
.Adelay-03 {
animation-delay: 0.3s;
animation-duration: 0.1s;
}
.Adelay-04 {
animation-delay: 0.4s;
animation-duration: 0.1s;
}
.Adelay-05 {
animation-delay: 0.5s;
animation-duration: 0.1s;
}
.Adelay-1 {
animation-delay: 1s;
animation-duration: 0.1s;
}
.Adelay-15 {
animation-delay: 1.5s;
animation-duration: 0.1s;
}
.Adelay-2 {
animation-delay: 2s;
animation-duration: 0.1s;
}
.Adelay-25 {
animation-delay: 2.5s;
animation-duration: 0.1s;
}

View File

@ -2,22 +2,26 @@
import { defineNuxtConfig } from 'nuxt/config' import { defineNuxtConfig } from 'nuxt/config'
export default defineNuxtConfig({ export default defineNuxtConfig({
ssr: false, ssr: false,
routeRules: { routeRules: {
'/**': { ssr: false } '/**': { ssr: false }
}, },
css: ['@/assets/css/common.scss'], css: [
devtools: { enabled: true }, 'swiper/css',
'swiper/css/mousewheel',
'@/assets/css/common.scss'
],
devtools: { enabled: true },
postcss: { postcss: {
plugins: { plugins: {
autoprefixer: {}, autoprefixer: {},
tailwindcss: {}, tailwindcss: {},
}, },
}, },
modules: ['@pinia/nuxt', 'nuxt-icons'], modules: ['@pinia/nuxt', 'nuxt-icons'],
compatibilityDate: '2025-03-12', compatibilityDate: '2025-03-12',
}) })

9
package-lock.json generated
View File

@ -15,7 +15,8 @@
"nuxt-icons": "^3.2.1", "nuxt-icons": "^3.2.1",
"pinia": "^2.1.7", "pinia": "^2.1.7",
"swiper": "^11.2.5", "swiper": "^11.2.5",
"vue-i18n": "^9.8.0" "vue-i18n": "^9.8.0",
"vue-swiper-animate": "^1.0.0"
}, },
"devDependencies": { "devDependencies": {
"@nuxt/devtools": "latest", "@nuxt/devtools": "latest",
@ -13525,6 +13526,12 @@
"vue": "^3.2.0" "vue": "^3.2.0"
} }
}, },
"node_modules/vue-swiper-animate": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/vue-swiper-animate/-/vue-swiper-animate-1.0.0.tgz",
"integrity": "sha512-QT4uSDYv2iYhgL883BQj9pXve9WTLNeVTJjrgw1XCekOmB60qDUf9tLXWfxYeNgWwGAz8tCOlgjpxjNeSaGk0w==",
"license": "ISC"
},
"node_modules/vue-types": { "node_modules/vue-types": {
"version": "3.0.2", "version": "3.0.2",
"resolved": "https://registry.npmjs.org/vue-types/-/vue-types-3.0.2.tgz", "resolved": "https://registry.npmjs.org/vue-types/-/vue-types-3.0.2.tgz",

View File

@ -36,7 +36,8 @@
"nuxt-icons": "^3.2.1", "nuxt-icons": "^3.2.1",
"pinia": "^2.1.7", "pinia": "^2.1.7",
"swiper": "^11.2.5", "swiper": "^11.2.5",
"vue-i18n": "^9.8.0" "vue-i18n": "^9.8.0",
"vue-swiper-animate": "^1.0.0"
}, },
"browserslist": [ "browserslist": [
"cover 99.5%" "cover 99.5%"

View File

@ -1,8 +1,7 @@
<template> <template>
<div style="height: 100%;width: 100%;"> <div style="height: 100%;width: 100%;">
<!-- Swiper 容器 --> <!-- Swiper 容器 -->
<swiper class="swiper-container h-full" :direction="'vertical'" :slides-per-view="1" :speed="700" <swiper class="swiper-container h-full" v-bind="swiperOptions" @swiper="onSwiper" @slideChange="onSlideChange">
:mousewheel="true" :allow-touch-move="false" @swiper="onSwiper" @slideChange="onSlideChange">
<!-- 第一个滑块 --> <!-- 第一个滑块 -->
<swiper-slide class="swiper-slide-a flex flex-col items-center justify-center text-white" :style="{ <swiper-slide class="swiper-slide-a flex flex-col items-center justify-center text-white" :style="{
backgroundImage: `url(${bgImage})`, backgroundImage: `url(${bgImage})`,
@ -10,22 +9,35 @@
backgroundRepeat: 'no-repeat', backgroundRepeat: 'no-repeat',
backgroundSize: '100% 100%', backgroundSize: '100% 100%',
}"> }">
<div class="text-xl tracking-wider font-light animate-fadeInUp">{{ $t('index_name') }}</div> <div class="ani text-xl font-light tracking-[0.3em]" swiper-animate-effect="fadeInUp"
<div class="w-[45%] h-px bg-white my-5 animate-fadeInUp"></div> swiper-animate-duration="0.5s" swiper-animate-delay="0.3s">
<div class="text-3xl font-semibold animate-fadeInUp">{{ $t('index_main') }}</div> {{ $t('index_name') }}
<div class="w-[45%] h-px bg-white my-5 animate-fadeInUp"></div> </div>
<div class="text-lg font-light animate-fadeInUp">{{ $t('index_get_to') }}</div> <div class="ani w-[45%] h-px bg-white my-5" swiper-animate-effect="fadeInUp"
swiper-animate-duration="0.5s" swiper-animate-delay="0.3s">
</div>
<div class="text-3xl font-semibold ani" swiper-animate-effect="fadeInUp" swiper-animate-duration="0.5s"
swiper-animate-delay="0.4s">{{ $t('index_main') }}</div>
<div class="w-[45%] h-px bg-white my-5 ani" swiper-animate-effect="fadeInUp"
swiper-animate-duration="0.5s" swiper-animate-delay="0.3s"></div>
<div class="text-lg font-light ani" swiper-animate-effect="fadeInUp" swiper-animate-duration="0.5s"
swiper-animate-delay="0.3s">{{ $t('index_get_to') }}</div>
<div class="array" style=" margin-top: 50px;"> <div class="array" style=" margin-top: 50px;">
<img style="width: 50px;height: 50px;" src="/images/group9.png"> <img style="width: 50px;height: 50px;" src="/images/group9.png">
</div> </div>
<!-- 社交图标 --> <!-- 社交图标 -->
<div class="absolute bottom-[42px] w-full"> <div class="absolute bottom-[42px] w-full ani" swiper-animate-effect="fadeInUp"
swiper-animate-duration="0.5s" swiper-animate-delay="0.3s">
<div class="flex justify-center w-full"> <div class="flex justify-center w-full">
<img @click="shareToInstagram" src="/images/group11.png" <img @click="shareToInstagram" src="/images/group11.png"
class="w-[30px] h-[30px] cursor-pointer"> class="w-[30px] h-[30px] cursor-pointer">
<span class="mx-[17px] border-r-2 border-white h-[30px] mb-[-12px]"></span> <span class="mx-[17px] border-r-2 border-white h-[30px] mb-[-12px]"></span>
<img @click="shareToYoutube" src="/images/group14.png" class="w-[30px] h-[30px] cursor-pointer"> <img @click="shareToYoutube" src="/images/group14.png" class="w-[30px] h-[30px] cursor-pointer">
<!-- 按相同方式添加其他社交图标 --> <span class="mx-[17px] border-r-2 border-white h-[30px] mb-[-12px]"></span>
<img @click="shareToInstagram" src="/images/group13.png"
class="w-[30px] h-[30px] cursor-pointer">
<span class="mx-[17px] border-r-2 border-white h-[30px] mb-[-12px]"></span>
<img @click="shareToYoutube" src="/images/group12.png" class="w-[30px] h-[30px] cursor-pointer">
</div> </div>
<!-- 导航链接 --> <!-- 导航链接 -->
@ -40,29 +52,398 @@
</div> </div>
</swiper-slide> </swiper-slide>
<!-- 按相同方式添加其他滑块 --> <!-- 第二个滑块 -->
<swiper-slide class="swiper-slide-a text-white" :style="{
backgroundImage: `url(${bgImage2})`,
backgroundPosition: 'center center',
backgroundRepeat: 'no-repeat',
backgroundSize: '100% 100%',
height: '100%'
}">
<div class="px-[150px]">
<div class="flex items-center text-left">
<div class="w-1/2">
<h2 class="text-3xl t1 inline-block ani" swiper-animate-effect="fadeInUp"
swiper-animate-duration="0.5s" swiper-animate-delay="0.1s">{{ $t('index_m1') }}</h2>
<h4 class="text-lg mt-10 leading-[35px] ani" swiper-animate-effect="fadeInUp"
swiper-animate-duration="0.5s" swiper-animate-delay="0.1s">{{ $t('index_m2') }}</h4>
<div class="w-[18%] h-[2px] bg-white my-5 ani" swiper-animate-effect="fadeInUp"
swiper-animate-duration="0.5s" swiper-animate-delay="0.1s"></div>
<div class="flex items-center ani" swiper-animate-effect="fadeInUp"
swiper-animate-duration="0.5s" swiper-animate-delay="0.1s">
<NuxtLink to="/content" class="text-white">{{ $t('index_m3') }}</NuxtLink>
<img src="/images/group7.png" alt="">
</div>
</div>
<div class="w-1/2 text-center ani" swiper-animate-effect="fadeInUp"
swiper-animate-duration="0.5s" swiper-animate-delay="0.3s">
<img src="/images/maskgroup.png" class="w-[400px] mx-auto">
</div>
</div>
<div class="w-full h-px bg-white my-10"></div>
</div>
<div class="flex w-full justify-center">
<div class="w-[205px] ani" swiper-animate-effect="zoomIn" swiper-animate-duration="0.5s"
swiper-animate-delay="0.1s">
<h4 class="t2 text-xl font-semibold">{{ $t('index_m4') }}</h4>
<div class="mt-[15px] leading-[26px] tracking-[1px]">{{ $t('index_m4_1') }}</div>
</div>
<span class="mx-[60px] -mb-3 border-r-2 border-white h-[145px] inline-block ani"
swiper-animate-effect="zoomIn" swiper-animate-duration="0.5s"
swiper-animate-delay="0.1s"></span>
<div class="w-[205px] ani" swiper-animate-effect="zoomIn" swiper-animate-duration="0.5s"
swiper-animate-delay="0.1s">
<h4 class="t2 text-xl font-semibold">{{ $t('index_m5') }}</h4>
<div class="mt-[15px] leading-[26px] tracking-[1px]">{{ $t('index_m5_1') }}</div>
</div>
<span class="mx-[60px] -mb-3 border-r-2 border-white h-[145px] inline-block ani"
swiper-animate-effect="zoomIn" swiper-animate-duration="0.5s"
swiper-animate-delay="0.1s"></span>
<div class="w-[205px] ani" swiper-animate-effect="zoomIn" swiper-animate-duration="0.5s"
swiper-animate-delay="0.1s">
<h4 class="t2 text-xl font-semibold">{{ $t('index_m6') }}</h4>
<div class="mt-[15px] leading-[26px] tracking-[1px]">{{ $t('index_m6_1') }}</div>
</div>
</div>
<div class="array absolute bottom-[50px]">
<img class="w-[50px] h-[50px]" src="/images/group9.png" alt="">
</div>
<div class="absolute bottom-42 px-4 flex justify-between items-center right-2 ">
<div class="float-left flex">
<img src="/images/group191.png" class="h-full mt-[10px]">
<span class="ml-2 box2ybs1">{{ $t('index_m7') }}</span>
<span class="mx-4 box2ybs2"></span>
</div>
<div class="float-right text-center">
<img @click="scrollToTop" src="/images/group97.png" class="w-[35px] h-[35px] cursor-pointer">
<div class="w-[33px] h-[1px] bg-[#DEDEDE] mx-auto my-2"></div>
<img @click="shareToInstagram" src="/images/group11.png"
class="w-[35px] h-[35px] cursor-pointer">
<div class="w-[33px] h-[1px] bg-[#DEDEDE] mx-auto my-2"></div>
<img @click="shareToYoutube" src="/images/group14.png" class="w-[35px] h-[35px] cursor-pointer">
<div class="w-[33px] h-[1px] bg-[#DEDEDE] mx-auto my-2"></div>
<img @click="shareToFacebook" src="/images/group13.png"
class="w-[35px] h-[35px] cursor-pointer">
<div class="w-[33px] h-[1px] bg-[#DEDEDE] mx-auto my-2"></div>
<img @click="shareToX" src="/images/group12.png" class="w-[35px] h-[35px] cursor-pointer">
</div>
</div>
</swiper-slide>
<!-- 第三个滑块 -->
<swiper-slide class="swiper-slide-a" :style="{
height: '100%'
}">
<h3 class="t3 text-2xl font-semibold ani" swiper-animate-effect="fadeInUp"
swiper-animate-duration="0.5s" swiper-animate-delay="0.1s">{{ $t('index_s1') }}</h3>
<div class="w-1/2 mt-[30px] text-sm text-[#606060] text-center ani" swiper-animate-effect="fadeInUp"
swiper-animate-duration="0.5s" swiper-animate-delay="0.1s">
{{ $t('index_s2') }}
</div>
<div class="px-[150px] py-5">
<div class="flex">
<div class="relative ani" swiper-animate-effect="zoomIn" swiper-animate-duration="0.5s"
swiper-animate-delay="0.1s">
<img src="/images/group160.png" class="w-[80%] mx-auto">
<div class="absolute left-[65px] bottom-[20px] text-xl text-white">
{{ $t('index_s3') }}
</div>
</div>
<div class="relative ani" swiper-animate-effect="zoomIn" swiper-animate-duration="0.5s"
swiper-animate-delay="0.1s">
<img src="/images/group161.png" class="w-[80%] mx-auto">
<div class="absolute left-[65px] bottom-[20px] text-xl text-white">
{{ $t('index_s4') }}
</div>
</div>
<div class="relative ani" swiper-animate-effect="zoomIn" swiper-animate-duration="0.5s"
swiper-animate-delay="0.1s">
<img src="/images/group162.png" class="w-[80%] mx-auto">
<div class="absolute left-[65px] bottom-[20px] text-xl text-white">
{{ $t('index_s5') }}
</div>
</div>
</div>
<div class="w-full h-px bg-[#1C1C1C] my-5"></div>
</div>
<div class="flex items-center ani" swiper-animate-effect="zoomIn" swiper-animate-duration="0.5s"
swiper-animate-delay="0.1s">
<NuxtLink to="/content" class="text-[#0c1923]">{{ $t('index_m3') }}</NuxtLink>
<img src="/images/group7-1.png" alt="">
</div>
<div class="array absolute bottom-[50px]">
<img class="w-[50px] h-[50px]" src="/images/group40.png" alt="">
</div>
<div class="absolute bottom-42 px-4 flex justify-between items-center right-2">
<div class="float-left flex">
<img src="/images/group194.png" class="h-full mt-[10px]">
<div style="width: 100px;">
<div class="text-[#337ab7] cursor-pointer hover:text-[#175FCB]">{{ $t('index_contact') }}
</div>
<div class="box3zx1"></div>
<div class="text-[#337ab7] cursor-pointer hover:text-[#175FCB]">{{ $t('index_news') }}</div>
<div class="box3zx1"></div>
<div class="text-[#337ab7] cursor-pointer hover:text-[#175FCB]">{{ $t('index_about') }}
</div>
<div class="box3zx1"></div>
<div class="text-[#337ab7] cursor-pointer hover:text-[#175FCB]">{{ $t('index_services') }}
</div>
<div class="box3zx1"></div>
<div class="text-[#337ab7] cursor-pointer hover:text-[#175FCB]">{{ $t('index_clients') }}
</div>
</div>
<span class="mx-4 box2ybs3"></span>
</div>
<div class="float-right text-center">
<img @click="scrollToTop" src="/images/group97-1.png" class="w-[35px] h-[35px] cursor-pointer">
<div class="w-[33px] h-[2px] bg-[#A8CBFF] mx-auto my-2"></div>
<img @click="shareToInstagram" src="/images/group11-1.png"
class="w-[35px] h-[35px] cursor-pointer">
<div class="w-[33px] h-[2px] bg-[#A8CBFF] mx-auto my-2"></div>
<img @click="shareToYoutube" src="/images/group14-1.png"
class="w-[35px] h-[35px] cursor-pointer">
<div class="w-[33px] h-[2px] bg-[#A8CBFF] mx-auto my-2"></div>
<img @click="shareToFacebook" src="/images/group13-1.png"
class="w-[35px] h-[35px] cursor-pointer">
<div class="w-[33px] h-[2px] bg-[#A8CBFF] mx-auto my-2"></div>
<img @click="shareToX" src="/images/group12-1.png" class="w-[35px] h-[35px] cursor-pointer">
</div>
</div>
</swiper-slide>
<!-- 第四个滑块 -->
<swiper-slide class="swiper-slide-a" :style="{
backgroundImage: `url('/images/group159.png')`,
backgroundPosition: 'center center',
backgroundRepeat: 'no-repeat',
backgroundSize: '100% 100%',
height: '100%',
color: '#000000',
textAlign: 'left'
}">
<div class="flex justify-center">
<div class="w-[30%]">
<h2 class="ani t4 text-3xl" swiper-animate-effect="fadeInLeft" swiper-animate-duration="0.5s"
swiper-animate-delay="0.1s">{{ $t('index_a1') }}</h2>
<div class="ani" swiper-animate-effect="fadeInLeft" swiper-animate-duration="0.5s"
swiper-animate-delay="0.1s"
style="line-height: 25px;margin-top: 30px;color: #606060;font-size: 14px;">{{ $t('index_a2')
}}
</div>
<div class="ani" swiper-animate-effect="fadeInLeft" swiper-animate-duration="0.5s"
swiper-animate-delay="0.1s"
style="width: 100%; height: 1px; background-color: #F1F1F1; margin: 20px auto;"></div>
<div class="ani flex items-center justify-end" swiper-animate-effect="fadeInLeft"
swiper-animate-duration="0.5s" swiper-animate-delay="0.1s">
<div>
<NuxtLink to="/content" class="text-[#0c1923]">{{ $t('index_m3') }}</NuxtLink>
</div>
<div>
<img src="/images/group6.png" class="w-5 ml-[5px]">
</div>
</div>
</div>
<div class="w-[45%]"></div>
</div>
<div class="box2yb absolute px-4 bottom-42 right-2">
<div class="box2yb191 float-left pr-[14px] flex">
<img src="/images/group191.png" class="h-full mt-[10px]">
<span class="box2ybs1">{{ $t('index_m7') }}</span>
<span class="box2ybs2 border-r-2 border-[#DEDEDE]"></span>
</div>
<div class="box1ybi float-right">
<img class="back-to-top py-[6px] cursor-pointer" src="/images/group97.png" @click="scrollToTop">
<div class="box1ybz"></div>
<img @click="shareToInstagram" src="/images/group11.png" class="py-[6px] cursor-pointer">
<div class="box1ybz"></div>
<img @click="shareToYoutube" src="/images/group14.png" class="py-[6px] cursor-pointer">
<div class="box1ybz"></div>
<img @click="shareToFacebook" src="/images/group13.png" class="py-[6px] cursor-pointer">
<div class="box1ybz"></div>
<img @click="shareToX" src="/images/group12.png" class="py-[6px] cursor-pointer">
</div>
</div>
<div class="array absolute bottom-[50px]">
<img class="w-[50px] h-[50px]" src="/images/group40.png">
</div>
</swiper-slide>
<!--第五个滑块-->
<swiper-slide class="swiper-slide-a">
<div class="flex justify-center items-center w-full">
<div class="w-[40%] text-right">
<img id="img1" src="/images/Group157.png" class="w-[80%] border-r-[10px] border-[#214ADB] inline-block">
</div>
<div class="w-[44%] text-left pl-5">
<h2 class="text-2xl font-bold">{{ $t('index_n1') }}</h2>
<div class="my-[20px]">{{ $t('index_n2') }}</div>
<div class="h-[1px] w-[150px] bg-[#0c1923]"></div>
<div class="flex mt-[10px]">
<div><NuxtLink to="/content" class="text-[#0c1923]">{{ $t('index_m3') }}</NuxtLink></div>
<div>
<img src="/images/group7-1.png" class="w-5 ml-[5px]">
</div>
</div>
<div class="news_padd flex items-center">
<img id="swipen_next" src="/images/group10.png" class="w-[30px] cursor-pointer" @click="nextNews">
<swiper class="swiper-container h-full" @swiper="onSwiperNews" v-bind="swiperOptionsNews" >
<swiper-slide v-for="(item, index) in newsList" :key="index" :virtualIndex="index" class="swiper-wrapper w-full">
<!-- 这里可以使用v-for循环渲染新闻列表 -->
<div class="swiper-slide">
<div class="text-center">
<h3 class="font-semibold text-2xl">
<a :href="item.url" target="_blank" class="text-[#0c1923]">
{{ item.title }}
</a>
</h3>
<h5 class="text-[#606060] mt-[25px] leading-[25px]">
<a :href="item.url" target="_blank" class="text-[#0c1923]">
{{ item.description }}
</a>
</h5>
</div>
</div>
</swiper-slide>
</swiper>
<img id="swipen_prev" src="/images/group9-1.png" class="w-[30px] cursor-pointer" @click="prevNews">
</div>
<div class="w-full h-[1px] bg-black mt-10"></div>
</div>
</div>
<div class="absolute right-[10px]">
<div class="box2yb191 float-left pr-[14px] flex">
<img src="/images/group194.png" class="h-full mt-[10px]">
<span class="box2ybs4 text-[#175FCB]">Navigation</span>
<span class="box2ybs5 border-r-[2px] border-[#A8CBFF]"></span>
</div>
<div class="box1ybi float-right">
<img class="back-to-top py-[6px] cursor-pointer" src="/images/group97-1.png" @click="scrollToTop">
<div class="box1ybz"></div>
<img @click="shareToInstagram" src="/images/group11-1.png" class="py-[6px] cursor-pointer">
<div class="box1ybz"></div>
<img @click="shareToYoutube" src="/images/group14-1.png" class="py-[6px] cursor-pointer">
<div class="box1ybz"></div>
<img @click="shareToFacebook" src="/images/group13-1.png" class="py-[6px] cursor-pointer">
<div class="box1ybz"></div>
<img @click="shareToX" src="/images/group12-1.png" class="py-[6px] cursor-pointer">
</div>
</div>
</swiper-slide>
</swiper> </swiper>
</div> </div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { Swiper, SwiperSlide } from 'swiper/vue' import { Swiper, SwiperSlide } from 'swiper/vue'
import { nextTick, ref } from 'vue'
import 'swiper/css' import 'swiper/css'
import 'swiper/css/pagination' import { Mousewheel, Navigation } from 'swiper/modules'
import 'swiper/css/mousewheel'
import 'swiper/css/navigation'
import * as swiperAni from '@/assets/animate/animate.js'
// //
const bgImage = 'images/Group157.png' const bgImage = 'images/Group157.png'
//
const bgImage2 = '/images/Group157.png'
// Swiper // Swiper
let swiperInstance: any = null let swiperInstance: any = null
//
let newsSwiper: any = null
//
const newsList = ref([
{
title: '新闻标题1',
description: '新闻描述内容1这里是新闻的简短描述。',
url: '/news/1'
},
{
title: '新闻标题2',
description: '新闻描述内容2这里是新闻的简短描述。',
url: '/news/2'
},
{
title: '新闻标题3',
description: '新闻描述内容3这里是新闻的简短描述。',
url: '/news/3'
},
{
title: '新闻标题4',
description: '新闻描述内容4这里是新闻的简短描述。',
url: '/news/4'
},
{
title: '新闻标题5',
description: '新闻描述内容5这里是新闻的简短描述。',
url: '/news/5'
}
])
//
const nextNews = () => {
if (newsSwiper) {
newsSwiper.slideNext()
}
}
const prevNews = () => {
if (newsSwiper) {
newsSwiper.slidePrev()
}
}
// Swiper
const swiperOptions = {
direction: 'vertical',
slidesPerView: 1,
speed: 700,
mousewheel: true,
loop: false,
modules: [Mousewheel],
}
// Swiper
const swiperOptionsNews = {
direction: 'horizontal',
slidesPerView: 1,
speed: 700,
mousewheel: true,
loop: false,
modules: [Mousewheel, Navigation],
navigation: {
nextEl: '#swipen_next',
prevEl: '#swipen_prev',
},
}
const onSwiperNews = (swiper: any) => {
newsSwiper = swiper
}
const onSwiper = (swiper: any) => { const onSwiper = (swiper: any) => {
swiperInstance = swiper swiperInstance = swiper
//
nextTick(() => {
swiperAni.swiperAnimateCache(swiper); //
swiperAni.swiperAnimate(swiper); //
})
} }
const onSlideChange = () => { const onSlideChange = () => {
// //
if (swiperInstance) {
//console.log('slide change')
setTimeout(() => {
swiperAni.swiperAnimate(swiperInstance); // slideslide
}, 300)
}
} }
// //
@ -81,9 +462,18 @@ const shareToFacebook = () => {
const shareToX = () => { const shareToX = () => {
// X/Twitter // X/Twitter
} }
//
const scrollToTop = () => {
if (swiperInstance) {
swiperInstance.slideTo(0)
}
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "@/assets/animate/animate.min.css";
.swiper-slide-a { .swiper-slide-a {
text-align: center; text-align: center;
background: #fff; background: #fff;
@ -114,18 +504,141 @@ const shareToX = () => {
} }
@keyframes start { @keyframes start {
0%, 0%,
30% { 30% {
opacity: 0; opacity: 0;
transform: translate(0, -8px); transform: translate(0, -8px);
} }
60% { 60% {
opacity: 1; opacity: 1;
transform: translate(0, 0); transform: translate(0, 0);
} }
100% { 100% {
opacity: 0; opacity: 0;
transform: translate(0, 10px); transform: translate(0, 10px);
} }
} }
@keyframes zoomIn {
from {
opacity: 0;
transform: scale3d(0.3, 0.3, 0.3);
}
50% {
opacity: 1;
}
}
.animate-zoomIn {
animation: zoomIn 0.5s ease-out forwards;
}
.t1::after {
content: '';
margin-top: -13px;
width: 205px;
height: 20px;
background: #175FCB;
display: block;
}
.t2::after {
content: '';
width: 100px;
height: 20px;
background: #175FCB;
display: block;
margin: 0 auto;
margin-top: -13px;
}
.box2ybs1 {
writing-mode: vertical-rl;
transform: rotate(360deg);
padding-right: 20px;
color: #DEDEDE;
letter-spacing: 5px;
text-align: center;
}
.box2ybs2 {
margin-left: -14px;
display: inline-block;
height: 224px;
margin-top: 10px;
border-right: 2px solid #DEDEDE;
}
.box2ybs3 {
margin-left: -7px;
border-right: 2px solid #A8CBFF;
display: inline-block;
height: 224px;
margin-top: 10px;
}
.box2ybs4 {
writing-mode: vertical-rl;
transform: rotate(360deg);
padding-right: 20px;
letter-spacing: 5px;
text-align: center;
}
.box2ybs5 {
margin-left: -14px;
display: inline-block;
height: 224px;
margin-top: 10px;
}
.box3zx1 {
width: 33px;
height: 2px;
border-top: solid #A8CBFF;
margin: 15px auto;
}
.t3::after {
content: '';
width: 350px;
height: 20px;
background: #A8CBFF;
display: block;
margin: 0 auto;
margin-top: -13px;
}
.t4::after {
content: '';
width: 100px;
height: 20px;
background: #A3C8FF;
display: block;
margin-top: -13px;
}
//
.delay-700 {
animation-delay: 700ms;
}
.t5::after {
content: '';
width: 100px;
height: 20px;
background: #214ADB;
display: block;
margin-top: -13px;
}
.box1ybz {
width: 33px;
height: 2px;
background-color: #A8CBFF;
margin: 2px auto;
}
.news_padd {
margin-top: 20px;
height: 80px;
}
</style> </style>

View File

@ -35,7 +35,7 @@ export default {
index_a2: '河南导航贸易有限公司是一家专业的进出口贸易企业,主要从事二手采矿设备、配件和部件、粮食和油料及上游原材料、以及化工、造纸和磨具等原材料的进出口业务。公司总部位于河南省郑州市。作为一家具有国资背景的企业,我们凭借丰富的行业经验和专业的团队,在矿业和工程行业赢得了广泛赞誉。', index_a2: '河南导航贸易有限公司是一家专业的进出口贸易企业,主要从事二手采矿设备、配件和部件、粮食和油料及上游原材料、以及化工、造纸和磨具等原材料的进出口业务。公司总部位于河南省郑州市。作为一家具有国资背景的企业,我们凭借丰富的行业经验和专业的团队,在矿业和工程行业赢得了广泛赞誉。',
// 首页5 // 首页5
index_n1: '新闻咨询', index_n1: '新闻资讯',
index_n2: '我们的最新焦点故事', index_n2: '我们的最新焦点故事',
// about // about

View File

@ -8,6 +8,9 @@ module.exports = {
}, },
screens: { screens: {
}, },
transitionDelay: {
'5000': '5000ms',
}
}, },
}, },
plugins: [], plugins: [],