修复 z-index 层级问题

This commit is contained in:
张成
2025-11-09 23:07:38 +08:00
parent 302720ba18
commit df875feaec
11 changed files with 177 additions and 21 deletions

View File

@@ -1,8 +1,4 @@
:global {
.guide-bar {
z-index: 999;
}
}
// GuideBar 的 z-index 通过局部样式类动态控制
.cqContainer {
display: flex;
@@ -89,7 +85,7 @@
.fixedHeader {
position: sticky;
top: 0;
z-index: 90;
z-index: 100;
display: flex;
flex-direction: column;
}
@@ -187,6 +183,11 @@
/* 隐藏时不响应鼠标事件 */
}
.guideBarList {
z-index: 999;
// GuideBar 动态 z-index 控制
.guideBarLowZIndex {
z-index: 80 !important; // 筛选弹出时,降低层级,避免遮挡筛选内容
}
.guideBarHighZIndex {
z-index: 900 !important; // 正常状态,保持较高层级
}

View File

@@ -71,6 +71,35 @@ const ListPage = () => {
const scrollStartPositionRef = useRef(0); // 记录开始滚动的位置
const [showSearchBar, setShowSearchBar] = useState(true); // 控制搜索框显示/隐藏(筛选始终显示)
// 动态控制 GuideBar 的 z-index
const [guideBarZIndex, setGuideBarZIndex] = useState<'low' | 'high'>('high');
const [isPublishMenuVisible, setIsPublishMenuVisible] = useState(false);
const [isDistanceFilterVisible, setIsDistanceFilterVisible] = useState(false);
// 处理 PublishMenu 显示/隐藏
const handlePublishMenuVisibleChange = useCallback((visible: boolean) => {
setIsPublishMenuVisible(visible);
}, []);
// 处理 DistanceQuickFilter 显示/隐藏
const handleDistanceFilterVisibleChange = useCallback((visible: boolean) => {
setIsDistanceFilterVisible(visible);
}, []);
// 监听筛选相关组件和发布菜单的状态,动态调整 GuideBar 的 z-index
useEffect(() => {
if (isPublishMenuVisible) {
// PublishMenu 展开时GuideBar 保持高层级
setGuideBarZIndex('high');
} else if (isShowFilterPopup || isDistanceFilterVisible) {
// 任何筛选组件展开时GuideBar 降低层级
setGuideBarZIndex('low');
} else {
// 都关闭时GuideBar 保持高层级
setGuideBarZIndex('high');
}
}, [isShowFilterPopup, isPublishMenuVisible, isDistanceFilterVisible]);
// ScrollView 滚动处理函数
const handleScrollViewScroll = useCallback(
(e: any) => {
@@ -442,6 +471,7 @@ const ListPage = () => {
quickName="order"
cityValue={distanceQuickFilter?.distanceFilter}
quickValue={distanceQuickFilter?.order}
onMenuVisibleChange={handleDistanceFilterVisibleChange}
/>
</View>
</View>
@@ -486,7 +516,11 @@ const ListPage = () => {
</View>
</View>
)}
<GuideBar currentPage="list" guideBarClassName={styles.guideBarList} />
<GuideBar
currentPage="list"
guideBarClassName={`${styles.guideBarList} ${guideBarZIndex === 'low' ? styles.guideBarLowZIndex : styles.guideBarHighZIndex}`}
onPublishMenuVisibleChange={handlePublishMenuVisibleChange}
/>
</>
);
};