当我拖动光标时我可以打开菜单,但是如果我把它拉下来,我不知道如何关闭它。 我试过 onmouseou 但它并没有真正起作用,因为当我移动鼠标时它一直关闭 css代码中有一些额外的东西
<div id="mySidenav" class="sidenav">
<a href="#">123</a>
<a href="#">123</a>
<a href="#">123</a>
</div>
<span onmouseover="openNav(this)" style="font-size:30px;cursor:pointer" >☰MENÜ</span>
.sidenav {
height: 100%;
width: 0;
position: fixed;
z-index: 1;
top: 0;
left: 0;
background-color: #111;
overflow-x: hidden;
transition: 0.5s;
padding-top: 60px;
}
.sidenav a {
padding: 8px 8px 8px 32px;
text-decoration: none;
font-size: 25px;
color: #818181;
display: block;
transition: 0.3s;
}
.sidenav a:hover {
color: #f1f1f1;
}
.sidenav .closebtn {
position: absolute;
top: 0;
right: 25px;
font-size: 36px;
margin-left: 50px;
}
function openNav() {
document.getElementById("mySidenav").style.width = "250px";
}
function closeNav() {
document.getElementById("mySidenav").style.width = "0";
}
最佳答案
您使用了错误的事件监听器。这两个将完成工作:
- 鼠标输入: https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseenter_event
- 鼠标离开: https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseleave_event
此外 - 最好在 js 而不是 html 中设置事件监听器:
function openNav() {
document.getElementById("mySidenav").style.width = "250px";
}
function closeNav() {
document.getElementById("mySidenav").style.width = "0";
}
// Listener set on menu mouse enter
document.getElementById("menu").addEventListener("mouseenter", ()=>{openNav()});
// Listener set on sidenav mouse leave
document.getElementById("mySidenav").addEventListener("mouseleave", ()=>{closeNav()});
只需要给菜单一个id来选择它:
<div id="mySidenav" class="sidenav">
<a href="#">123</a>
<a href="#">123</a>
<a href="#">123</a>
</div>
<span id="menu" style="font-size:30px;cursor:pointer" >☰MENÜ</span>
这是工作 jsfiddle 的链接:https://jsfiddle.net/msq4ogza/4/
关于javascript - 我如何煮一个动画菜单,该菜单在草书进入时打开并在光标移开时关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55318106/