【发布时间】:2021-05-15 13:51:51
【问题描述】:
我花了无数个小时试图弄清楚为什么我的下拉菜单(通过单击汉堡菜单图标打开/关闭)位于导航栏的前面,即使我已经指定了 z 索引、溢出和位置。此问题仅发生在下面的 MobileNav 组件上。 MobileNav 包含一个汉堡图标和实际的下拉菜单。单击汉堡图标后,下拉菜单将关闭或打开。目前它显示在导航组件上方,我很难弄清楚原因。任何帮助将不胜感激。
查看下拉菜单行为的视频:https://www.youtube.com/watch?v=zOBnb6r_RN4&ab_channel=TylerOreskey
下拉菜单应该从导航栏底部出来并靠近导航栏底部。
导航栏组件:渲染 MobileNav 组件
const Navbar = (props) => {
const [showDropdown, setShowDropdown] = useState(false);
const dropdownToggleHandler = () => setShowDropdown(!showDropdown);
const dropdownClosedHandler = () => setShowDropdown(false);
return (
<header
className={classes.Navbar}
style={{
position: props.passedNavbar ? "fixed" : "relative",
}}
>
<nav className={classes.MobileNav}>
<MobileNav
allNavigationRefs={props.allNavigationRefs}
scrollToDiv={props.scrollToDiv}
open={showDropdown}
closed={dropdownClosedHandler}
dropdownToggleHandler={dropdownToggleHandler}
/>
</nav>
</header>
);
};
export default memo(Navbar);
导航栏组件的CSS文件:z-index 在这里不起作用。
.Navbar {
top: 0;
height: 50px;
background-color: hsl(213, 27%, 15%);
border-bottom: #00bfff 3px solid;
width: 100%;
z-index: 500;
}
@media (max-width: 500px) {
.DesktopNav {
display: none;
}
}
@media (min-width: 500px) {
.MobileNav {
display: none;
}
}
MobileNav组件
const MobileNav = (props) => {
return (
<div className={classes.MobileNav}>
<DropdownToggle clicked={props.dropdownToggleHandler} />
<Dropdown open={props.open} allNavigationRefs={props.allNavigationRefs} />
</div>
);
};
export default MobileNav;
MobileNav 组件的CSS 文件
.MobileNav {
overflow: hidden;
}
Dropdown 组件:(它显示在 Navbar 组件上方,我无法让它位于导航栏组件的后面)。
const Dropdown = (props) => {
let attachedClasses = [classes.Dropdown, classes.Close];
if (props.open) {
attachedClasses = [classes.Dropdown, classes.Open];
}
return (
<div className={attachedClasses.join(" ")}>
<NavigationItems allNavigationRefs={props.allNavigationRefs} />
</div>
);
};
export default Dropdown;
Dropdown 组件的CSS 文件:z-index 在这里不起作用。
.Dropdown {
background: hsl(212, 87%, 3%);
height: 200px;
transition: transform 0.3s ease-out;
z-index: 400;
display: block;
}
.Open {
transform: translate(0, 25%);
}
.Close {
transform: translate(0, -75%);
}
【问题讨论】:
-
问题的截图会有所帮助。
-
Youtube 链接在这里:youtube.com/watch?v=zOBnb6r_RN4&ab_channel=TylerOreskey
标签: css reactjs overflow z-index display