修复 z-index 层级问题
This commit is contained in:
@@ -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; // 正常状态,保持较高层级
|
||||
}
|
||||
@@ -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}
|
||||
/>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user