You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

230 lines
4.8 KiB

<template>
<view class="wrap">
<view class="container">
<image class="container-bg" :src="require('@/static/index-bg.png')"></image>
<view class="animations" ref="apiAnimateDemo">
<view v-for="(item,index) in animations">
<gal-css-animate v-if="item.show" :animateName="item.name" :style="{'top':item.class=='logo1'?navBarBoxHeight+'px':''}" :class='item.class' :duration="item.duration"
:autoPlay="item.autoplay" timingFunction="ease-in">
<image :src="item.content" :style="{'width':item.width,'height':item.height}"></image>
</gal-css-animate>
</view>
</view>
<view class="titlewrap">
<view class="title-progress">
<view class="progress-text">{{progressPercentage}}%</view>
<view class="progress-bar-container">
<view class="progress-bar" :style="{'width':progressPercentage+'%'}"></view>
</view>
</view>
<view @click="toHome">
<gal-css-animate v-if="showBtn" :animateName="'wobble'" class="title-btn" :duration="'1s'"
timingFunction="ease-in">
<image style="width: 322rpx;height: 211rpx;margin-top:70rpx" :src="require('@/static/index-btn.png')"></image>
</gal-css-animate>
</view>
</view>
<!-- <view class="support">
<view>
<p>技术支撑:江苏有线苏州分公司</p>
</view>
</view> -->
</view>
</view>
</template>
<script>
import galCssAnimate from "@/GAL/components/gal-css-animate.vue"
export default {
components: {
galCssAnimate
},
data() {
return {
progressPercentage: 0,
interval: null,
isShare: false,
showBtn:false,
navBarBoxHeight:0,
animations: [{
name: 'flipInX',
duration: '2s',
timer: 1500,
content: require('../../static/index-map.png'),
autoplay: false,
class: 'logo',
show: false,
width: '745rpx',
height: '857rpx'
},
// {
// name: 'fadeIn',
// duration: '1s',
// timer: 1000,
// content: require('../../static/index-icon.png'),
// autoplay: false,
// class: 'logo1',
// show: false,
// width: '58rpx',
// height: '86rpx'
// },
{
name: 'zoomIn',
duration: '1s',
timer: 1500,
content: require('../../static/index-title.png'),
autoplay: false,
class: 'title',
show: false,
width: '512rpx',
height: '131rpx'
}
],
}
},
async onLoad() {
// await this.$onLaunched;
this.play(0)
this.start();
const MenuButton = uni.getMenuButtonBoundingClientRect()
this.navBarBoxHeight = MenuButton.top + MenuButton.height + 10
},
beforeDestroy() {
clearInterval(this.interval);
},
methods: {
toHome(){
uni.switchTab({
url:'/pages/home/home'
})
},
start() {
this.interval = setInterval(() => {
if (this.progressPercentage < 100) {
this.progressPercentage++;
} else {
clearInterval(this.interval);
this.showBtn = true
}
}, 30);
},
play(index) {
if (index > this.animations.length - 1) {
return
}
this.animations[index]['show'] = true
this.animations[index]['autoplay'] = true
setTimeout(() => {
this.play(index + 1);
}, this.animations[index].timer)
},
},
}
</script>
<style lang="scss">
.wrap{
height: 120vh;
width: 100vw;
position: relative;
}
.container {
background: #efe9df;
&-bg{
position: absolute;
top:0;
left:0;
width:100%;
height:100%;
}
.logo {
position: absolute;
top: 60rpx;
left: 0rpx;
}
.logo1 {
position: absolute;
top: 130rpx;
right: 50rpx;
}
.title {
// width: 512rpx;
// height: 131rpx;
position: absolute;
top: 850rpx;
left: 50%;
transform: translate(-50%, 0%);
}
.titlewrap {
position: absolute;
top: 1020rpx;
left: 50%;
transform: translate(-50%, 0%);
text-align: center;
width: 70%;
.title-btn {
width: 322rpx;
height: 211rpx;
margin:0 auto;
margin-top: 70rpx;
}
.title-progress {
margin-top: 30rpx;
.progress-text {
text-align: center;
color: #960909;
font-size: 60rpx;
margin-bottom: 20rpx
}
.progress-bar-container {
width: 100%;
height: 40rpx;
background-color: #f7f1e2;
overflow: hidden;
border: 4rpx solid #d6aca1;
border-radius: 20rpx;
margin: 0 auto;
font-size: 0;
}
.progress-bar {
height: 100%;
background-color: #960909;
width: 0;
border-radius: 0 16rpx 16rpx 0;
}
}
}
.support {
position: absolute;
bottom: 10rpx;
width: 100%;
font-size: 24rpx;
color: #333;
font-family: '';
opacity: 1;
text-align: center;
z-index: 9;
}
}
</style>