diff --git a/miniprogram/pages/main/journal/index.less b/miniprogram/pages/main/journal/index.less index 7e16f0b..a66717c 100644 --- a/miniprogram/pages/main/journal/index.less +++ b/miniprogram/pages/main/journal/index.less @@ -1,21 +1,22 @@ .custom-navbar { + // 导航栏样式 +} - .more-menu { - top: 0; - left: 0; - width: 100%; - height: 100%; +.more-menu { + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 999; + position: fixed; + background: var(--theme-bg-overlay); + + .content { + z-index: 1000; position: fixed; - background: var(--theme-bg-overlay); - - .content { - margin: 190rpx 0 0 12rpx; - z-index: 1; - position: fixed; - background: var(--theme-bg-menu); - box-shadow: 0 0 12px var(--theme-shadow-medium); - border-radius: 2px; - } + background: var(--theme-bg-menu); + box-shadow: 0 0 12px var(--theme-shadow-medium); + border-radius: 8rpx; } } diff --git a/miniprogram/pages/main/journal/index.ts b/miniprogram/pages/main/journal/index.ts index 3b0a3b8..b45a030 100644 --- a/miniprogram/pages/main/journal/index.ts +++ b/miniprogram/pages/main/journal/index.ts @@ -36,6 +36,8 @@ interface JournalData { isFinished: boolean; stickyOffset: number; isShowMoreMenu: boolean; + menuTop: number; + menuLeft: number; } Page({ @@ -63,7 +65,9 @@ Page({ isFetching: false, isFinished: false, stickyOffset: 0, - isShowMoreMenu: false + isShowMoreMenu: false, + menuTop: 0, + menuLeft: 0 }, onLoad() { Events.reset("JOURNAL_REFRESH", () => { @@ -110,9 +114,30 @@ Page({ }); }, toggleMoreMenu() { - this.setData({ - isShowMoreMenu: !this.data.isShowMoreMenu - }) + if (!this.data.isShowMoreMenu) { + // 打开菜单时计算位置 + const query = wx.createSelectorQuery(); + query.select(".more").boundingClientRect(); + query.exec((res) => { + if (res[0]) { + const { top, left, height } = res[0]; + this.setData({ + isShowMoreMenu: true, + menuTop: top + height + 16, // 按钮下方 8px + menuLeft: left + }); + } + }); + } else { + // 关闭菜单 + this.setData({ + isShowMoreMenu: false + }); + } + }, + /** 阻止事件冒泡 */ + stopPropagation() { + // 空函数,仅用于阻止事件冒泡 }, toCreater() { wx.navigateTo({ diff --git a/miniprogram/pages/main/journal/index.wxml b/miniprogram/pages/main/journal/index.wxml index 11fba5d..46b472d 100644 --- a/miniprogram/pages/main/journal/index.wxml +++ b/miniprogram/pages/main/journal/index.wxml @@ -2,17 +2,22 @@ - - - - - - - - + + + + + + + +