【问题标题】:Nav <ul> is mouseout? How to fix [duplicate]Nav <ul> 是鼠标悬停吗?如何修复[重复]
【发布时间】:2015-05-23 01:11:03
【问题描述】:

对不起,我不擅长表达我的问题。 我正在尝试制作一个sidenav,当您将鼠标悬停在屏幕侧面的一个小条上时会显示它,然后在鼠标移出时消失。

<!--the small bar on the side-->
<div id="sidebar"></div>

<!--the nav to display-->
<nav id="sidenav">
<ul>
<li>HOME</li>
<li>ABOUT</li>
</ul>
</nav>

然后我用一些 css 将它们放在一边,让它们看起来很漂亮。接下来,我添加了一些JS:

<div id="sidebar" onmouseenter="show()">""</div>
<nav id="sidenav" onmouseout="hide()">""</nav>

<script>
function show() {
    document.getElementById("sidebar").style.display = "none";
    document.getElementById("sidenav").style.display = "block";
}

function hide() {
    document.getElementById("sidebar").style.display = "block";
    document.getElementById("sidenav").style.display = "none";
}
</script>

脚本运行良好,正如我想要的那样。我遇到的唯一问题是,当我尝试将鼠标悬停在列表项上时,hide() 函数运行,就好像它需要我进入 UL 作为鼠标悬停。

附:我目前正在学习 JS,所以在做出判断时请记住这一点。

【问题讨论】:

  • 这可能是用 CSS 更好地处理的事情。 CSS 有 :hover+ 兄弟选择器。
  • 是的,CSS 可以做很多事情:tympanus.net/Development/SidebarTransitions
  • 这很奇怪,因为您在发布的代码中没有调用hide()
  • 真的很难知道你想在这里完成什么。也许通过使用代码 sn-p 来建立一个工作示例。
  • 哦,谢谢,哈哈,这是一个错字。但我得到了答案,所以我确信它被理解了。

标签: javascript html css nav


【解决方案1】:

一个非常简单的 CSS 解决方案:

#sidebar {
  background: blue;
}
#sidenav {
  background: red;
  display: none;
}
#parent:hover #sidebar {
  display: none;
}
#parent:hover #sidenav {
  display: block;
}
<div id="parent">
  <div id="sidebar">""</div>
  <nav id="sidenav">""</nav>
</div>

通过这种方式有很多可以改进的地方,但这是一个好的开始。

【讨论】:

  • 谢谢。我从一开始就考虑这样做,但不确定如何去做和/或是否有更好的方法来做。看到它实际付诸实施,它真的很简单,很容易使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-12
  • 1970-01-01
  • 2012-09-17
  • 2016-05-26
  • 1970-01-01
  • 2013-02-18
  • 2015-12-20
相关资源
最近更新 更多