| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- import { ref } from 'vue';
- import { ScreenSizeEnum } from '/@/enums/sizeEnum';
- import { useWindowSizeFn } from '/@/hooks/event/useWindowSizeFn';
- // 定义 useAdapt 方法参数
- interface AdaptOptions {
- // xl>1200
- xl?: string | number;
- // xl>992
- lg?: string | number;
- // xl>768
- md?: string | number;
- // xl>576
- sm?: string | number;
- // xl>480
- xs?: string | number;
- //xl<480默认值
- mindef?: string | number;
- //默认值
- def?: string | number;
- }
- export function useAdapt(props?: AdaptOptions) {
- //默认宽度
- const width = ref<string | number>(props?.def || '600px');
- //获取宽度
- useWindowSizeFn(calcWidth, 100, { immediate: true });
- //计算宽度
- function calcWidth() {
- let windowWidth = document.documentElement.clientWidth;
- switch (true) {
- case windowWidth > ScreenSizeEnum.XL:
- width.value = props?.xl || '600px';
- break;
- case windowWidth > ScreenSizeEnum.LG:
- width.value = props?.lg || '600px';
- break;
- case windowWidth > ScreenSizeEnum.MD:
- width.value = props?.md || '600px';
- break;
- case windowWidth > ScreenSizeEnum.SM:
- width.value = props?.sm || '500px';
- break;
- case windowWidth > ScreenSizeEnum.XS:
- width.value = props?.xs || '400px';
- break;
- default:
- width.value = props?.mindef || '300px';
- break;
- }
- }
- return { width, calcWidth };
- }
|