diff --git a/pages/index/index.js b/pages/index/index.js index 7dec3b1..8f8d15c 100644 --- a/pages/index/index.js +++ b/pages/index/index.js @@ -139,24 +139,24 @@ Page({ const moveY = e.touches[0].clientY; const diffY = moveY - this.data.startY; - // 如果移动距离超过20px,视为拖动 if (Math.abs(diffY) > 20) { this.setData({ isDragging: true }); - // 更新按钮位置 - let newTop = this.data.sidebarBtnTop + diffY * 2; // 转换为rpx + let newTop = this.data.sidebarBtnTop + diffY * 3; - // 限制按钮在屏幕范围内 - const screenHeight = wx.getSystemInfoSync().screenHeight * 2; // 转换为rpx - const btnHeight = 180; // 按钮高度,单位rpx - const boundary = 300; // 边界值,限制拖动范围 + const systemInfo = wx.getSystemInfoSync(); + const screenHeight = systemInfo.screenHeight * 2; + const btnHeight = 90; - if (newTop < boundary) { - newTop = boundary; - } else if (newTop > screenHeight - btnHeight - boundary) { - newTop = screenHeight - btnHeight - boundary; + const minTop = screenHeight * 0.2; + const maxTop = screenHeight * 0.6; + + if (newTop < minTop) { + newTop = minTop; + } else if (newTop > maxTop) { + newTop = maxTop; } this.setData({ @@ -193,12 +193,22 @@ Page({ console.log('首页初始化') const savedBtnTop = wx.getStorageSync('sidebarBtnTop'); const savedBtnHidden = wx.getStorageSync('sidebarBtnHidden'); - if (savedBtnTop !== '') { - this.setData({ - sidebarBtnTop: savedBtnTop, - sidebarBtnHidden: savedBtnHidden || false - }); + const systemInfo = wx.getSystemInfoSync(); + const screenHeight = systemInfo.screenHeight * 2; + + let defaultTop = screenHeight * 0.5; + if (savedBtnTop !== '' && savedBtnTop !== -100) { + const minTop = screenHeight * 0.2; + const maxTop = screenHeight * 0.6; + if (savedBtnTop >= minTop && savedBtnTop <= maxTop) { + defaultTop = savedBtnTop; + } } + + this.setData({ + sidebarBtnTop: defaultTop, + sidebarBtnHidden: savedBtnHidden || false + }); this.checkAndRestoreLoginStatus() this.loadGoods() }, @@ -212,9 +222,21 @@ Page({ const app = getApp(); app.updateCurrentTab('index'); app.globalData.showTabBar = true; + + const savedBtnHidden = wx.getStorageSync('sidebarBtnHidden'); + this.setData({ + sidebarBtnHidden: savedBtnHidden || false + }); + this.checkAndRestoreLoginStatus() }, + onHide: function () { + this.setData({ + sidebarBtnHidden: true + }); + }, + onPullDownRefresh: function() { this.onRefresh() }, @@ -767,6 +789,9 @@ Page({ // 跳转到招商合作页面 navigateToCooperation: function() { + this.setData({ + sidebarBtnHidden: true + }); wx.navigateTo({ url: '/pages/cooperation/index' }) diff --git a/pages/index/index.wxml b/pages/index/index.wxml index 957e915..5ac2070 100644 --- a/pages/index/index.wxml +++ b/pages/index/index.wxml @@ -109,7 +109,7 @@ - + diff --git a/pages/index/index.wxss b/pages/index/index.wxss index c3cd2af..3618a7f 100644 --- a/pages/index/index.wxss +++ b/pages/index/index.wxss @@ -25,26 +25,28 @@ page { padding: 10rpx 0; margin-bottom: 20rpx; overflow: hidden; - transition: opacity 0.4s ease-in-out, transform 0.4s ease-in-out; - -webkit-transition: opacity 0.4s ease-in-out, -webkit-transform 0.4s ease-in-out; + transition: opacity 0.4s ease-in-out, transform 0.4s ease-in-out, visibility 0.4s ease-in-out; + -webkit-transition: opacity 0.4s ease-in-out, -webkit-transform 0.4s ease-in-out, visibility 0.4s ease-in-out; will-change: opacity, transform; opacity: 1; transform: translateY(0); -webkit-transform: translateY(0); - /* 使用固定高度,避免iOS系统重新计算布局 */ - height: 180rpx; + visibility: visible; + height: auto; + /* 固定高度,避免iOS上的布局抖动 */ + min-height: 160rpx; } -/* 顶部搜索区域完全隐藏状态 - 使用transform隐藏,避免影响页面布局 */ +/* 顶部搜索区域完全隐藏状态 - 用于平滑收缩高度 */ .top-hidden { - pointer-events: none; opacity: 0; - /* 使用transform将搜索区域移出视口,而不是改变高度 */ transform: translateY(-100%); -webkit-transform: translateY(-100%); - /* 保留固定高度,避免页面布局变化 */ - height: 180rpx; - /* 保留padding和margin,避免页面布局变化 */ + pointer-events: none; + visibility: hidden; + /* 保持高度不变,避免iOS上的布局抖动 */ + height: auto; + min-height: 160rpx; padding: 10rpx 0; margin-bottom: 20rpx; }