|
|
@ -25,6 +25,8 @@ Page({ |
|
|
searchSectionVisible: true, |
|
|
searchSectionVisible: true, |
|
|
lastScrollTop: 0, |
|
|
lastScrollTop: 0, |
|
|
isScrollLocked: false, |
|
|
isScrollLocked: false, |
|
|
|
|
|
searchSectionOpacity: 1, |
|
|
|
|
|
searchSectionTransform: 0, |
|
|
isSearchBarFullyHidden: false, |
|
|
isSearchBarFullyHidden: false, |
|
|
|
|
|
|
|
|
// 回到顶部按钮
|
|
|
// 回到顶部按钮
|
|
|
@ -824,22 +826,33 @@ Page({ |
|
|
onScroll: function(e) { |
|
|
onScroll: function(e) { |
|
|
const { scrollTop } = e.detail; |
|
|
const { scrollTop } = e.detail; |
|
|
|
|
|
|
|
|
// 只控制搜索区域的完全显示/隐藏状态,不再使用内联样式控制过渡
|
|
|
let searchSectionOpacity = 1; |
|
|
// 所有过渡效果通过CSS类统一控制
|
|
|
let searchSectionTransform = 0; |
|
|
let isSearchBarFullyHidden = false; |
|
|
let isSearchBarFullyHidden = false; |
|
|
|
|
|
|
|
|
if (scrollTop > 200) { |
|
|
if (scrollTop > 50) { |
|
|
// 当滚动距离超过200rpx时,完全隐藏搜索区域
|
|
|
// 当滚动距离超过50rpx时,开始逐渐隐藏
|
|
|
|
|
|
const hideProgress = Math.min((scrollTop - 50) / 150, 1); // 0-1的隐藏进度,延长隐藏过程
|
|
|
|
|
|
searchSectionOpacity = 1 - hideProgress; |
|
|
|
|
|
searchSectionTransform = -20 * hideProgress; |
|
|
|
|
|
|
|
|
|
|
|
// 当隐藏进度达到100%时,添加完全隐藏类
|
|
|
|
|
|
if (hideProgress >= 1) { |
|
|
isSearchBarFullyHidden = true; |
|
|
isSearchBarFullyHidden = true; |
|
|
} |
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// 当滚动回到顶部时,显示搜索区域
|
|
|
// 当滚动回到顶部时,重置所有状态
|
|
|
if (scrollTop <= 150) { |
|
|
if (scrollTop <= 50) { |
|
|
|
|
|
searchSectionOpacity = 1; |
|
|
|
|
|
searchSectionTransform = 0; |
|
|
isSearchBarFullyHidden = false; |
|
|
isSearchBarFullyHidden = false; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 更新搜索框状态
|
|
|
// 更新搜索框状态和样式
|
|
|
this.setData({ |
|
|
this.setData({ |
|
|
|
|
|
searchSectionOpacity: searchSectionOpacity, |
|
|
|
|
|
searchSectionTransform: searchSectionTransform, |
|
|
isSearchBarFullyHidden: isSearchBarFullyHidden, |
|
|
isSearchBarFullyHidden: isSearchBarFullyHidden, |
|
|
lastScrollTop: scrollTop |
|
|
lastScrollTop: scrollTop |
|
|
}); |
|
|
}); |
|
|
|