perf: 当浏览器窗口的可视区域小于或等于1280时隐藏页宽

This commit is contained in:
xiaoxian521 2024-03-23 08:19:37 +08:00
parent 97f167825d
commit 51ef3647fc
4 changed files with 18 additions and 2 deletions

View File

@ -387,7 +387,7 @@ onUnmounted(() => removeMatchMedia);
</li> </li>
</ul> </ul>
<span v-if="device !== 'mobile'"> <span v-if="useAppStoreHook().getViewportWidth > 1280">
<p :class="['mt-5', pClass]">页宽</p> <p :class="['mt-5', pClass]">页宽</p>
<Segmented <Segmented
class="mb-2 select-none" class="mb-2 select-none"

View File

@ -89,7 +89,8 @@ let isAutoCloseSidebar = true;
useResizeObserver(appWrapperRef, entries => { useResizeObserver(appWrapperRef, entries => {
if (isMobile) return; if (isMobile) return;
const entry = entries[0]; 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 <= 760 ? setTheme("vertical") : setTheme(useAppStoreHook().layout);
/** width app-wrapper /** width app-wrapper
* 0 < width <= 760 隐藏侧边栏 * 0 < width <= 760 隐藏侧边栏

View File

@ -21,6 +21,11 @@ export const useAppStore = defineStore({
`${responsiveStorageNameSpace()}layout` `${responsiveStorageNameSpace()}layout`
)?.layout ?? getConfig().Layout, )?.layout ?? getConfig().Layout,
device: deviceDetection() ? "mobile" : "desktop", device: deviceDetection() ? "mobile" : "desktop",
// 浏览器窗口的可视区域大小
viewportSize: {
width: document.documentElement.clientWidth,
height: document.documentElement.clientHeight
},
// 作用于 src/views/components/draggable/index.vue 页面,当离开页面并不会销毁 new Swap()sortablejs 官网也没有提供任何销毁的 api // 作用于 src/views/components/draggable/index.vue 页面,当离开页面并不会销毁 new Swap()sortablejs 官网也没有提供任何销毁的 api
sortSwap: false sortSwap: false
}), }),
@ -30,6 +35,12 @@ export const useAppStore = defineStore({
}, },
getDevice(state) { getDevice(state) {
return state.device; return state.device;
},
getViewportWidth(state) {
return state.viewportSize.width;
},
getViewportHeight(state) {
return state.viewportSize.height;
} }
}, },
actions: { actions: {
@ -62,6 +73,9 @@ export const useAppStore = defineStore({
setLayout(layout) { setLayout(layout) {
this.layout = layout; this.layout = layout;
}, },
setViewportSize(size) {
this.viewportSize = size;
},
setSortSwap(val) { setSortSwap(val) {
this.sortSwap = val; this.sortSwap = val;
} }

View File

@ -19,6 +19,7 @@ export type appType = {
}; };
layout: string; layout: string;
device: string; device: string;
viewportSize: { width: number; height: number };
sortSwap: boolean; sortSwap: boolean;
}; };