diff --git a/src/layout/components/setting/index.vue b/src/layout/components/setting/index.vue index 4d18137fe..0676f0584 100644 --- a/src/layout/components/setting/index.vue +++ b/src/layout/components/setting/index.vue @@ -387,7 +387,7 @@ onUnmounted(() => removeMatchMedia); - +

页宽

{ if (isMobile) return; const entry = entries[0]; - const [{ inlineSize: width }] = entry.borderBoxSize; + const [{ inlineSize: width, blockSize: height }] = entry.borderBoxSize; + useAppStoreHook().setViewportSize({ width, height }); width <= 760 ? setTheme("vertical") : setTheme(useAppStoreHook().layout); /** width app-wrapper类容器宽度 * 0 < width <= 760 隐藏侧边栏 diff --git a/src/store/modules/app.ts b/src/store/modules/app.ts index fa626f73d..4fe0b8226 100644 --- a/src/store/modules/app.ts +++ b/src/store/modules/app.ts @@ -21,6 +21,11 @@ export const useAppStore = defineStore({ `${responsiveStorageNameSpace()}layout` )?.layout ?? getConfig().Layout, device: deviceDetection() ? "mobile" : "desktop", + // 浏览器窗口的可视区域大小 + viewportSize: { + width: document.documentElement.clientWidth, + height: document.documentElement.clientHeight + }, // 作用于 src/views/components/draggable/index.vue 页面,当离开页面并不会销毁 new Swap(),sortablejs 官网也没有提供任何销毁的 api sortSwap: false }), @@ -30,6 +35,12 @@ export const useAppStore = defineStore({ }, getDevice(state) { return state.device; + }, + getViewportWidth(state) { + return state.viewportSize.width; + }, + getViewportHeight(state) { + return state.viewportSize.height; } }, actions: { @@ -62,6 +73,9 @@ export const useAppStore = defineStore({ setLayout(layout) { this.layout = layout; }, + setViewportSize(size) { + this.viewportSize = size; + }, setSortSwap(val) { this.sortSwap = val; } diff --git a/src/store/modules/types.ts b/src/store/modules/types.ts index 5192f5679..b8cb592e6 100644 --- a/src/store/modules/types.ts +++ b/src/store/modules/types.ts @@ -19,6 +19,7 @@ export type appType = { }; layout: string; device: string; + viewportSize: { width: number; height: number }; sortSwap: boolean; };