From bd9cb65c8ee634f1f7bad5a69e891e3a4f46b768 Mon Sep 17 00:00:00 2001 From: ZhangXianQiang <1135831638@qq.com> Date: 星期一, 01 四月 2024 15:54:41 +0800 Subject: [PATCH] feat:绘制地图 --- src/views/screen/components/screen-wrapper/index.vue | 58 +++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 49 insertions(+), 9 deletions(-) diff --git a/src/views/screen/components/screen-wrapper/index.vue b/src/views/screen/components/screen-wrapper/index.vue index d375a26..c501131 100644 --- a/src/views/screen/components/screen-wrapper/index.vue +++ b/src/views/screen/components/screen-wrapper/index.vue @@ -5,19 +5,21 @@ <el-button type="primary" @click="returnPath">绠$悊绯荤粺</el-button> </div> <div class="wrapper-content"> + <screen-map-three></screen-map-three> <div class="left-container wrapper"> - <screen-face class="animate-enter-x enter-left"></screen-face> - <screen-car class="animate-enter-x enter-left animate-delay-1"></screen-car> - <screen-video class="animate-enter-x enter-left animate-delay-2"></screen-video> + <screen-face class="enter-left" :class="{ 'animate-enter-x': isEnd }"></screen-face> + <screen-car class="enter-left animate-delay-1" :class="{ 'animate-enter-x': isEnd }"></screen-car> + <screen-video class="enter-left animate-delay-2" :class="{ 'animate-enter-x': isEnd }"></screen-video> </div> <div class="center-container center-wrapper"> - <screen-map></screen-map> - <screen-table class="animate-enter-y enter-top"></screen-table> + <!-- <screen-map></screen-map> --> + <screen-map-cover></screen-map-cover> + <screen-table class="enter-top" :class="{ 'animate-enter-y': isEnd }"></screen-table> <!-- <screen-detection></screen-detection> --> </div> <div class="right-container wrapper"> - <screen-examine class="animate-enter-x enter-right"></screen-examine> + <screen-examine class="enter-right" :class="{ 'animate-enter-x': isEnd }"></screen-examine> </div> </div> </div> @@ -30,7 +32,10 @@ import ScreenVideo from '../screen-video/index'; import ScreenCar from '../screen-car/index'; import ScreenMap from '../screen-map/index'; +import ScreenMapCover from '../screen-map-cover/index'; import ScreenTable from '../screen-table/index'; +import ScreenMapThree from '../screen-map-three/index.vue'; + export default { name: 'ScreenWrapper', components: { @@ -40,12 +45,33 @@ ScreenVideo, ScreenCar, ScreenMap, - ScreenTable + ScreenTable, + ScreenMapCover, + ScreenMapThree + }, + data() { + return { + isEnd: false + } }, methods: { returnPath() { this.$router.push('/index'); + }, + checkAnimationEnd(event) { + if (this.isEnd) return; + if (event.propertyName === 'transform') { + this.isEnd = true; + } } + }, + mounted() { + const container = document.querySelector('.screen-wrapper'); + container.addEventListener('transitionend', this.checkAnimationEnd); + }, + destroyed() { + const container = document.querySelector('.screen-wrapper'); + container.removeEventListener('transitionend', this.checkAnimationEnd); } } </script> @@ -105,24 +131,30 @@ flex-direction: column; justify-content: space-between; } + .animate-enter-x { animation: enter-x 0.4s ease forwards; } + .animate-enter-y { animation: enter-y 0.4s ease forwards; } + .enter-left { transform: translateX(-100px); opacity: 0; } + .enter-right { transform: translateX(100px); opacity: 0; } + .enter-top { transform: translateY(100px); opacity: 0; } + .animate-delay-1 { animation-delay: 0.1s; } @@ -136,14 +168,22 @@ } @keyframes enter-x { - 100% { + from { + opacity: 0; + } + + to { opacity: 1; transform: translateX(0); } } @keyframes enter-y { - 100% { + from { + opacity: 0; + } + + to { opacity: 1; transform: translateY(0); } -- Gitblit v1.8.0