diff --git a/src/assets/imgs/drop-down-menu/func-gaowenshajun@2x.png b/src/assets/imgs/drop-down-menu/func-gaowenshajun@2x.png new file mode 100644 index 0000000..e47f710 Binary files /dev/null and b/src/assets/imgs/drop-down-menu/func-gaowenshajun@2x.png differ diff --git a/src/assets/imgs/drop-down-menu/func-jiankang@2x.png b/src/assets/imgs/drop-down-menu/func-jiankang@2x.png new file mode 100644 index 0000000..dbfb681 Binary files /dev/null and b/src/assets/imgs/drop-down-menu/func-jiankang@2x.png differ diff --git a/src/assets/imgs/drop-down-menu/func-jieneng@2x.png b/src/assets/imgs/drop-down-menu/func-jieneng@2x.png new file mode 100644 index 0000000..5adf50b Binary files /dev/null and b/src/assets/imgs/drop-down-menu/func-jieneng@2x.png differ diff --git a/src/assets/imgs/drop-down-menu/func-set@2x.png b/src/assets/imgs/drop-down-menu/func-set@2x.png new file mode 100644 index 0000000..3aac916 Binary files /dev/null and b/src/assets/imgs/drop-down-menu/func-set@2x.png differ diff --git a/src/assets/imgs/drop-down-menu/func-shuju@2x.png b/src/assets/imgs/drop-down-menu/func-shuju@2x.png new file mode 100644 index 0000000..d378495 Binary files /dev/null and b/src/assets/imgs/drop-down-menu/func-shuju@2x.png differ diff --git a/src/assets/imgs/drop-down-menu/func-tongsuo@2x.png b/src/assets/imgs/drop-down-menu/func-tongsuo@2x.png new file mode 100644 index 0000000..aced53b Binary files /dev/null and b/src/assets/imgs/drop-down-menu/func-tongsuo@2x.png differ diff --git a/src/assets/imgs/drop-down-menu/func-xiping@2x.png b/src/assets/imgs/drop-down-menu/func-xiping@2x.png new file mode 100644 index 0000000..3b43aa8 Binary files /dev/null and b/src/assets/imgs/drop-down-menu/func-xiping@2x.png differ diff --git a/src/assets/imgs/drop-down-menu/func-zhenduan@2x.png b/src/assets/imgs/drop-down-menu/func-zhenduan@2x.png new file mode 100644 index 0000000..f06b572 Binary files /dev/null and b/src/assets/imgs/drop-down-menu/func-zhenduan@2x.png differ diff --git a/src/assets/imgs/drop-down-menu/func-ziqingjie@2x.png b/src/assets/imgs/drop-down-menu/func-ziqingjie@2x.png new file mode 100644 index 0000000..f9b33dd Binary files /dev/null and b/src/assets/imgs/drop-down-menu/func-ziqingjie@2x.png differ diff --git a/src/assets/imgs/drop-down-menu/retract@2x.png b/src/assets/imgs/drop-down-menu/retract@2x.png new file mode 100644 index 0000000..8e52893 Binary files /dev/null and b/src/assets/imgs/drop-down-menu/retract@2x.png differ diff --git a/src/view/drop-down-menu/drop-down-menu.vue b/src/view/drop-down-menu/drop-down-menu.vue new file mode 100644 index 0000000..f938c94 --- /dev/null +++ b/src/view/drop-down-menu/drop-down-menu.vue @@ -0,0 +1,114 @@ + + + + + \ No newline at end of file diff --git a/src/view/tabs/device-control.vue b/src/view/tabs/device-control.vue index 5152089..9db92a5 100644 --- a/src/view/tabs/device-control.vue +++ b/src/view/tabs/device-control.vue @@ -6,8 +6,8 @@ \ No newline at end of file diff --git a/src/view/tabs/home-screen.vue b/src/view/tabs/home-screen.vue index 30c9b89..ff14dbb 100644 --- a/src/view/tabs/home-screen.vue +++ b/src/view/tabs/home-screen.vue @@ -1,12 +1,63 @@ - + \ No newline at end of file diff --git a/src/view/tabs/tabs.vue b/src/view/tabs/tabs.vue index e7708e2..c720417 100644 --- a/src/view/tabs/tabs.vue +++ b/src/view/tabs/tabs.vue @@ -1,29 +1,37 @@ @@ -39,13 +47,19 @@ import FixedTime from './fixed-time.vue'; import HomeScreen from './home-screen.vue'; import DeviceControl from './device-control.vue'; import Scene from './scene.vue'; - +import DropDownMenu from '../drop-down-menu/drop-down-menu.vue'; import "swiper/swiper-bundle.css"; let mySwiper: Swiper; // 声明swiper +const touchStart = ref(0); +const touchDis = ref(0); +/** 是否展示菜单 */ +const showMenu = ref(false); +const menuDom: any = ref(); onMounted(() => { initSwiper(); + menuDom.value = document.getElementById('menu') as HTMLElement | null; }) /** 初始化swiper */ @@ -60,9 +74,73 @@ const initSwiper = () => { effect: "fade", //轮播图切换效果的类型 }); } + +/** 下拉菜单开始 */ +const dropDownMenuStart = (event: any) => { + touchStart.value = 0; + touchDis.value = 0; + touchStart.value = event.targetTouches[0].pageY; +} + +/** 下拉菜单移动 */ +const dropDownMenuMove = (event: any) => { + // 顶部上下拖拽 + let touchPos = event.targetTouches[0].pageY; + touchDis.value = touchPos - touchStart.value; + if (document.documentElement.scrollTop === 0 && touchDis.value > 0) { + showMenu.value = true; + if (menuDom.value) { + const top = (-(window.innerHeight) + touchDis.value) > 0? 0: (-(window.innerHeight) + touchDis.value); + menuDom.value.style.top = `${top}px`; + } + } else { + showMenu.value = false; + } +} + +/** 下拉菜单结束 */ +const dropDownMenuEnd = (event: any) => { + if (touchDis.value > 0) { + if (menuDom.value) { + menuDom.value.style.transition = `${(window.innerHeight - touchDis.value) / (window.innerHeight)}s`; + menuDom.value.style.top = '0'; + } + } +} + +/** 点击收起菜单 */ +const pullUp = () => { + if (menuDom.value && (menuDom.value.style.top === '0px' || menuDom.value.style.top === '0')) { + menuDom.value.style.top = '-100vh'; + menuDom.value.style.transition = '0.5s'; + // 0.5s动画时间。等时间过去隐藏 + setTimeout(() => { + showMenu.value = false; + menuDom.value.style.transition = '0s'; + }, 500); + } +} \ No newline at end of file