【发布时间】:2019-05-20 21:26:04
【问题描述】:
好的,我是 css 样式的新手,因为我通常在后端工作更多。我正在使用 react 设计一个网站,我遇到了一个相当常见的问题,当我尝试将鼠标悬停在导航栏项目上时,下拉菜单显示但消失得太快。
我浏览了 stackoverflow 的问题,但似乎没有一个有效。这是我的navitem.js 的代码:
import React from "react";
import "./NavBarItem.css";
import { IoIosArrowDown } from "react-icons/io";
const NavBarItem = props => {
let navItem = (
<div className="navitem">
{props.icon}
{props.navtext}
</div>
);
if (props.dropdownItems) {
navItem = (
<div className="navitem">
<button className="dropdownbutton">
{" "}
{props.icon}
{props.navtext}
<IoIosArrowDown className="dropdownicon" />
</button>
<div className="dropdownitems">
{props.dropdownItems.map(dropdownItem => (
<div className="dropdownitem" key={dropdownItem.key}>
{dropdownItem.text}
</div>
))}
</div>
</div>
);
}
return navItem;
};
export default NavBarItem;
还有我的navitem.css:
.navitem {
display: inline-block;
margin : 15px;
cursor : pointer;
}
.icon {
position : relative;
top : 2px;
right : 5px;
}
.dropdownicon {
position : relative;
top : 4px;
left : 5px;
}
.dropdownitems {
display: none;
position : absolute;
top : 55px;
margin-left: -35px;
background : linear-gradient(to right bottom, rgba(99, 25, 12, 0.8), rgba(226, 13, 13, 0.8));
color : white;
float: none;
padding: 12px 0;
}
.dropdownbutton{
border: none;
outline: none;
color: white;
font-size : 16px;
background-color: inherit;
font-family: inherit;
margin: 0;
cursor : pointer;
}
.navitem:hover .dropdownitems{
display: block;
}
.dropdownitem {
width : 9em;
text-align: center;
padding : 0;
color : white;
}
默认解决方案说我必须将按钮和图标包装在一个 div 中,并在其中添加 :hover 选择器。如果您查看我的代码,您会发现这正是我在这里所做的:
/*Button and dropdown items wrapped inside navitem div */
<div className="navitem">
/* Button */
<button className="dropdownbutton">
{" "}
{props.icon}
{props.navtext}
<IoIosArrowDown className="dropdownicon" />
</button>
/* Dropdown Items */
<div className="dropdownitems">
{props.dropdownItems.map(dropdownItem => (
<div className="dropdownitem" key={dropdownItem.key}>
{dropdownItem.text}
</div>
))}
</div>
</div>
在我的 css 中我正在这样做:
.navitem:hover .dropdownitems{
display: block;
}
.dropdownitems {
display: none;
position : absolute;
top : 55px;
margin-left: -35px;
background : linear-gradient(to right bottom, rgba(99, 25, 12, 0.8), rgba(226, 13, 13, 0.8));
color : white;
float: none;
padding: 12px 0;
}
这是一个重现问题的简单 gif:
任何线索/帮助将不胜感激。
【问题讨论】: