2025-06-09 08:46:56 +08:00
|
|
|
<template>
|
|
|
|
<div>
|
|
|
|
<transition
|
|
|
|
enter-active-class="animate__animated animate__fadeInLeft"
|
|
|
|
leave-active-class="animate__animated animate__fadeOutLeft"
|
|
|
|
>
|
2025-06-14 17:12:59 +08:00
|
|
|
<div
|
|
|
|
v-if="leftAnimationKey !== 0"
|
|
|
|
:key="leftAnimationKey"
|
|
|
|
class="left_content"
|
|
|
|
>
|
|
|
|
<template v-if="!leftCollapse">
|
|
|
|
<left-content />
|
|
|
|
</template>
|
|
|
|
<div
|
|
|
|
:class="[
|
|
|
|
'collapse_menu collapse_menu_left',
|
|
|
|
{ active: leftCollapse },
|
|
|
|
]"
|
|
|
|
@click="fnChangeLeftCollapse"
|
|
|
|
>
|
|
|
|
<img src="/src/assets/images/map/collapse_menu.png" alt="" />
|
|
|
|
</div>
|
2025-06-09 08:46:56 +08:00
|
|
|
</div>
|
|
|
|
</transition>
|
|
|
|
<transition
|
|
|
|
enter-active-class="animate__animated animate__fadeInRight"
|
|
|
|
leave-active-class="animate__animated animate__fadeOutRight"
|
|
|
|
>
|
2025-06-14 17:12:59 +08:00
|
|
|
<div
|
|
|
|
v-if="rightAnimationKey !== 0"
|
|
|
|
:key="rightAnimationKey"
|
|
|
|
class="right_content"
|
|
|
|
>
|
|
|
|
<template v-if="!rightCollapse">
|
|
|
|
<right-content />
|
|
|
|
</template>
|
|
|
|
<div
|
|
|
|
:class="[
|
|
|
|
'collapse_menu collapse_menu_right',
|
|
|
|
{ active: rightCollapse },
|
|
|
|
]"
|
|
|
|
@click="fnChangeRightCollapse"
|
|
|
|
>
|
|
|
|
<img src="/src/assets/images/map/collapse_menu.png" alt="" />
|
|
|
|
</div>
|
2025-06-09 08:46:56 +08:00
|
|
|
</div>
|
|
|
|
</transition>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script setup>
|
|
|
|
import { onMounted, ref } from "vue";
|
|
|
|
import LeftContent from "./left_content.vue";
|
|
|
|
import RightContent from "./right_content.vue";
|
|
|
|
|
2025-06-14 17:12:59 +08:00
|
|
|
const leftAnimationKey = ref(0);
|
|
|
|
const rightAnimationKey = ref(0);
|
|
|
|
const leftCollapse = ref(false);
|
|
|
|
const rightCollapse = ref(false);
|
2025-06-09 08:46:56 +08:00
|
|
|
onMounted(() => {
|
2025-06-14 17:12:59 +08:00
|
|
|
leftAnimationKey.value = Math.random();
|
|
|
|
rightAnimationKey.value = Math.random();
|
2025-06-09 08:46:56 +08:00
|
|
|
});
|
2025-06-14 17:12:59 +08:00
|
|
|
const fnChangeLeftCollapse = () => {
|
|
|
|
leftAnimationKey.value = Math.random();
|
|
|
|
leftCollapse.value = !leftCollapse.value;
|
|
|
|
};
|
|
|
|
const fnChangeRightCollapse = () => {
|
|
|
|
rightAnimationKey.value = Math.random();
|
|
|
|
rightCollapse.value = !rightCollapse.value;
|
|
|
|
};
|
2025-06-09 08:46:56 +08:00
|
|
|
</script>
|
|
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
|
.left_content {
|
|
|
|
width: 480px;
|
|
|
|
position: absolute;
|
|
|
|
left: 0;
|
|
|
|
top: 64px;
|
|
|
|
background-image: url("/src/assets/images/map/leftbg.png");
|
|
|
|
background-size: 450px 100%;
|
|
|
|
background-repeat: no-repeat;
|
|
|
|
padding-top: 15px;
|
|
|
|
padding-left: 15px;
|
|
|
|
padding-bottom: 15px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.right_content {
|
|
|
|
width: 480px;
|
|
|
|
position: absolute;
|
|
|
|
right: 0;
|
|
|
|
top: 64px;
|
|
|
|
background-image: url("/src/assets/images/map/rightbg.png");
|
|
|
|
background-size: 450px 100%;
|
|
|
|
background-repeat: no-repeat;
|
|
|
|
background-position: right center;
|
|
|
|
padding-top: 15px;
|
|
|
|
padding-right: 15px;
|
|
|
|
padding-bottom: 15px;
|
|
|
|
}
|
2025-06-14 17:12:59 +08:00
|
|
|
|
|
|
|
.collapse_menu {
|
|
|
|
width: 30px;
|
|
|
|
height: 89px;
|
|
|
|
position: absolute;
|
|
|
|
top: 50%;
|
|
|
|
background-image: url("/src/assets/images/map/collapse_menu_bg.png");
|
|
|
|
background-repeat: no-repeat;
|
|
|
|
background-size: 100% 100%;
|
|
|
|
cursor: pointer;
|
|
|
|
|
|
|
|
&.collapse_menu_left {
|
|
|
|
left: 480px;
|
|
|
|
transform: translateY(-50%);
|
|
|
|
|
|
|
|
&.active {
|
|
|
|
left: 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
&.collapse_menu_right {
|
|
|
|
right: 480px;
|
|
|
|
transform: translateY(-50%) rotate(180deg);
|
|
|
|
|
|
|
|
&.active {
|
|
|
|
right: 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
&.active {
|
|
|
|
top: 50vh;
|
|
|
|
|
|
|
|
img {
|
|
|
|
transform: translate(-50%, -50%) rotate(180deg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
img {
|
|
|
|
width: 10px;
|
|
|
|
height: 17px;
|
|
|
|
position: absolute;
|
|
|
|
left: 50%;
|
|
|
|
top: 50%;
|
|
|
|
transform: translate(-50%, -50%) rotate(0);
|
|
|
|
}
|
|
|
|
}
|
2025-06-09 08:46:56 +08:00
|
|
|
</style>
|