From b2ef7fa10a2faeeafdab8d94d8fa0a02a7dab360 Mon Sep 17 00:00:00 2001
From: ZhangXianQiang <1135831638@qq.com>
Date: 星期五, 08 三月 2024 17:57:41 +0800
Subject: [PATCH] fix:修改实例获取
---
src/components/scale-screen/scale-screen.vue | 53 ++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 44 insertions(+), 9 deletions(-)
diff --git a/src/components/scale-screen/scale-screen.vue b/src/components/scale-screen/scale-screen.vue
index 4420bab..d45fa9e 100644
--- a/src/components/scale-screen/scale-screen.vue
+++ b/src/components/scale-screen/scale-screen.vue
@@ -1,5 +1,9 @@
<template>
- <section :style="{ ...styles.box, ...boxStyle }" class="v-screen-box">
+ <section
+ :style="{ ...styles.box, ...boxStyle }"
+ class="v-screen-box"
+ ref="box"
+ >
<div
:style="{ ...styles.wrapper, ...wrapperStyle }"
class="screen-wrapper"
@@ -10,7 +14,7 @@
</section>
</template>
<script lang="ts" setup>
-import { nextTick, onMounted, onUnmounted, reactive, ref } from "vue";
+import { nextTick, onMounted, onUnmounted, reactive, ref, watch } from "vue";
import type { CSSProperties, PropType } from "vue";
/**
* 闃叉姈鍑芥暟
@@ -19,7 +23,7 @@
* @returns {() => void}
*/
function debounce(fn: Function, delay: number): () => void {
- // let timer: NodeJS.Timeout;
+ // let timer: NodeJS.Timer;
let timer: any;
return function (...args: any[]): void {
if (timer) clearTimeout(timer);
@@ -105,11 +109,27 @@
};
const screenWrapper = ref<HTMLElement>();
+const box = ref<HTMLElement>();
+
+watch(
+ () => props.autoScale,
+ async (newVal: any) => {
+ if (newVal) {
+ onResize();
+ addListener();
+ } else {
+ clearListener();
+ clearScreenWrapperStyle();
+ }
+ }
+);
/**
* 鍒濆鍖栧ぇ灞忓鍣ㄥ楂�
*/
const initSize = () => {
return new Promise<void>((resolve) => {
+ box.value!.scrollLeft = 0;
+ box.value!.scrollTop = 0;
nextTick(() => {
// region 鑾峰彇澶у睆鐪熷疄灏哄
if (props.width && props.height) {
@@ -144,9 +164,14 @@
screenWrapper.value!.style.height = `${state.originalHeight}px`;
}
};
-
+const clearScreenWrapperStyle = () => {
+ screenWrapper.value!.style.transform = "";
+ screenWrapper.value!.style.margin = "";
+};
const autoScale = (scale: number) => {
- if (!props.autoScale) return;
+ if (!props.autoScale) {
+ return;
+ }
const domWidth = screenWrapper.value!.clientWidth;
const domHeight = screenWrapper.value!.clientHeight;
const currentWidth = document.body.clientWidth;
@@ -195,17 +220,27 @@
attributeOldValue: true,
});
};
+
+const clearListener = () => {
+ window.removeEventListener("resize", onResize);
+ // state.observer?.disconnect();
+};
+
+const addListener = () => {
+ window.addEventListener("resize", onResize);
+ // initMutationObserver();
+};
onMounted(() => {
nextTick(async () => {
await initSize();
updateSize();
updateScale();
- window.addEventListener("resize", onResize);
- initMutationObserver();
+ addListener();
+ // initMutationObserver();
});
});
onUnmounted(() => {
- window.removeEventListener("resize", onResize);
- state.observer?.disconnect();
+ clearListener();
+ // state.observer?.disconnect();
});
</script>
--
Gitblit v1.8.0