|
@@ -3,6 +3,7 @@ import imageList from "@/data/home/index";
|
|
|
import { useHome } from "@/store/Home/index";
|
|
|
import Tabbar from "@/components/Tabbar.vue";
|
|
|
import { baseURL } from "@/assets/data/Model";
|
|
|
+import { setActivePinia } from "pinia";
|
|
|
|
|
|
const store = useHome();
|
|
|
const animageList = ref([] as any);
|
|
@@ -47,12 +48,20 @@ const transformLeft = ref(`translate3d(-230px, 0, 0)`);
|
|
|
|
|
|
// 手指滑动
|
|
|
const touchMove = (event: any) => {
|
|
|
+ const dowmImage = document.getElementById("downImg");
|
|
|
+ console.log(dowmImage!.offsetWidth);
|
|
|
+ const vw = window.innerWidth / 100;
|
|
|
let moveEndX = event.changedTouches[0].pageX;
|
|
|
let X = moveEndX - startX.value; //如果值为正,则代表手指右滑,反则则为左滑,为0则表示点击
|
|
|
- console.log(X);
|
|
|
+ console.log(X, position.value);
|
|
|
if (X > 0) {
|
|
|
if (position.value < 0) {
|
|
|
- position.value += 1;
|
|
|
+ position.value += 10;
|
|
|
+ transformLeft.value = `translate3d(${position.value}px, 0, 0)`;
|
|
|
+ }
|
|
|
+ } else if (X < 0) {
|
|
|
+ if (position.value > -(dowmImage!.offsetWidth - 60 * vw)) {
|
|
|
+ position.value -= 10;
|
|
|
transformLeft.value = `translate3d(${position.value}px, 0, 0)`;
|
|
|
}
|
|
|
}
|
|
@@ -64,21 +73,58 @@ const handletouchstart = (event: any) => {
|
|
|
startY.value = event.changedTouches[0].pageY;
|
|
|
};
|
|
|
|
|
|
+const downImageShow = ref(false);
|
|
|
+const upImageShow = ref(false);
|
|
|
+const textImageShow = ref(false);
|
|
|
+
|
|
|
store.$subscribe((mutation: any, state: any) => {
|
|
|
console.log("当前需要滚动滚动条", imageList, state.currentIndex);
|
|
|
+ downImageShow.value = false;
|
|
|
+ // position.value = imageList[state.currentIndex].left
|
|
|
+ // transformLeft.value = `translate3d(${position.value}%, 0, 0)`;
|
|
|
// // 实现滚动条居中
|
|
|
// const downImage = document.querySelector("#downImg");
|
|
|
- setTimeout(() => {
|
|
|
- const dowmImage = document.getElementById("downImg");
|
|
|
- console.log(dowmImage!.offsetWidth);
|
|
|
- const imageavg = dowmImage!.offsetWidth / 2;
|
|
|
- const viewavg = window.innerWidth / 2;
|
|
|
- const vw = window.innerWidth / 100;
|
|
|
- console.log(imageavg, viewavg, vw);
|
|
|
- position.value = Math.floor(-(imageavg + vw * 30 - viewavg));
|
|
|
- // position.value = Math.floor(-(dowmImage!.offsetWidth - window.innerWidth) / 2);
|
|
|
- transformLeft.value = `translate3d(${position.value}px, 0, 0)`;
|
|
|
- }, 2000);
|
|
|
+ // 加载底层图片
|
|
|
+ var img = new Image();
|
|
|
+ img.src = baseImageUrl.value + imageList[state.currentIndex].downCoverageURL;
|
|
|
+ img.onload = () => {
|
|
|
+ // 建筑图片加载完成后执行
|
|
|
+ downImageShow.value = true;
|
|
|
+ setTimeout(() => {
|
|
|
+ const dowmImage = document.getElementById("downImg");
|
|
|
+ console.log(dowmImage!.offsetWidth);
|
|
|
+ const imageavg = dowmImage!.offsetWidth / 2;
|
|
|
+ const viewavg = window.innerWidth / 2;
|
|
|
+ const vw = window.innerWidth / 100;
|
|
|
+ console.log(imageavg, viewavg, vw);
|
|
|
+ position.value = Math.floor(-(imageavg + vw * 30 - viewavg));
|
|
|
+ // position.value = Math.floor(-(dowmImage!.offsetWidth - window.innerWidth) / 2);
|
|
|
+ // position.value = imageList[state.currentIndex].left
|
|
|
+ transformLeft.value = `translate3d(${position.value}px, 0, 0)`;
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
+ if (imageList[state.currentIndex].upCoverageURL != "img-up3.png") {
|
|
|
+ // 加载上层图片
|
|
|
+ var imgUp = new Image();
|
|
|
+ imgUp.src =
|
|
|
+ baseImageUrl.value + imageList[state.currentIndex].upCoverageURL;
|
|
|
+ imgUp.onload = () => {
|
|
|
+ // 上层图片加载完成后执行
|
|
|
+ upImageShow.value = true;
|
|
|
+ };
|
|
|
+ } else {
|
|
|
+ upImageShow.value = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 加载文字层图片
|
|
|
+ var imgText = new Image();
|
|
|
+ imgText.src = baseImageUrl.value + `text.png`;
|
|
|
+ imgText.onload = () => {
|
|
|
+ // 上层图片加载完成后执行
|
|
|
+ textImageShow.value = true;
|
|
|
+ };
|
|
|
+
|
|
|
// if (imageList[state.currentIndex].upCoverageURL == "img-up1.png") {
|
|
|
// }
|
|
|
});
|
|
@@ -94,7 +140,12 @@ onMounted(() => {
|
|
|
|
|
|
<template>
|
|
|
<div class="home" id="homeid" v-if="imageOver">
|
|
|
- <img class="text-coverage" src="@/assets/img/home/text.png" alt="" />
|
|
|
+ <img
|
|
|
+ v-show="textImageShow"
|
|
|
+ class="text-coverage"
|
|
|
+ :src="baseImageUrl + `text.png`"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
|
|
|
<!-- <img
|
|
|
|
|
@@ -115,11 +166,13 @@ onMounted(() => {
|
|
|
"
|
|
|
class="up-box2"
|
|
|
:src="baseImageUrl + item.upCoverageURL"
|
|
|
+ v-show="upImageShow"
|
|
|
/>
|
|
|
<div
|
|
|
:class="item.upCoverageURL == 'img-up1.png' ? 'down-boxs' : ''"
|
|
|
@touchmove="touchMove"
|
|
|
@touchstart="handletouchstart"
|
|
|
+ v-show="downImageShow && upImageShow"
|
|
|
>
|
|
|
<img
|
|
|
id="downImg"
|
|
@@ -153,11 +206,14 @@ onMounted(() => {
|
|
|
::-webkit-scrollbar-track {
|
|
|
background: #f1f1f1;
|
|
|
}
|
|
|
+
|
|
|
$imgCount: 44;
|
|
|
+
|
|
|
.home {
|
|
|
max-width: 100%;
|
|
|
max-height: 100%;
|
|
|
- overflow: auto;
|
|
|
+ overflow: hidden;
|
|
|
+
|
|
|
// text-align: center;
|
|
|
// display: flex;
|
|
|
// justify-content: center;
|
|
@@ -172,6 +228,7 @@ $imgCount: 44;
|
|
|
pointer-events: none;
|
|
|
margin: auto;
|
|
|
}
|
|
|
+
|
|
|
.up-box {
|
|
|
width: 100vw;
|
|
|
height: 100vh;
|
|
@@ -239,12 +296,15 @@ $imgCount: 44;
|
|
|
|
|
|
@keyframes fadenum {
|
|
|
from {
|
|
|
- transform: scale(1.05); /*放大1.1倍*/
|
|
|
+ transform: scale(1.05);
|
|
|
+ /*放大1.1倍*/
|
|
|
object-fit: cover;
|
|
|
opacity: 0.5;
|
|
|
}
|
|
|
+
|
|
|
to {
|
|
|
- transform: scale(1.17); /*放大1.1倍*/
|
|
|
+ transform: scale(1.17);
|
|
|
+ /*放大1.1倍*/
|
|
|
object-fit: cover;
|
|
|
opacity: 1;
|
|
|
}
|
|
@@ -252,12 +312,15 @@ $imgCount: 44;
|
|
|
|
|
|
@keyframes fadenumOut {
|
|
|
from {
|
|
|
- transform: scale(1.05); /*放大1.1倍*/
|
|
|
+ transform: scale(1.05);
|
|
|
+ /*放大1.1倍*/
|
|
|
object-fit: cover;
|
|
|
opacity: 1;
|
|
|
}
|
|
|
+
|
|
|
to {
|
|
|
- transform: scale(1.17); /*放大1.1倍*/
|
|
|
+ transform: scale(1.17);
|
|
|
+ /*放大1.1倍*/
|
|
|
object-fit: cover;
|
|
|
opacity: 0.5;
|
|
|
}
|